RHEL 7 установка размера стека на неограниченный

Вопрос или проблема

У меня есть старый код, которому требуется, чтобы стек не был ограничен 8192 Кб для его выполнения.
Я привык делать это в /etc/security/limits.conf

* stack   hard    unlimited
* stack   soft    unlimited

Однако в RHEL 7.9, имея локальную учетную запись с оболочкой bash, когда я выполняю ulimit -s, она все еще отвечает 8192. Так что мое изменение limits.conf, похоже, не влияет?

В моем терминальном окне с оболочкой bash, если я сначала выполню ulimit -s unlimited, а затем запущу свой код, он работает нормально.

Какой наилучший способ установить размер стека на неограниченный для всех пользователей в RHEL 7.9 глобально?

Я что-то упускаю? ulimit и /etc/security/limits.conf — это не одно и то же?

Использование команды ulimit для установки ограничений изменит пределы только для текущего запущенного процесса (оболочки) и его дочерних процессов.

Например, если вы сделаете:

#От имени root
ulimit -s unlimited
#Переключиться на другого пользователя 
su - <user>
ulimit -s  ## неограниченно; так как это все еще дочерний процесс

Но если вы сделаете:

  #От имени root
  ulimit -s unlimited
  #Выход
  logout
  #Войти как другой пользователь и затем выполнить следующее
  ulimit -s ## 8192

Использование /etc/security/limits.conf установит их на постоянной основе, но вам нужно выполнить перелогин (новая сессия), чтобы они стали эффективными.

Если установка стека в /etc/security/limits.conf неэффективна, то проверьте, не перекрывается ли это в /etc/security/limits.d/ или посмотрите в файлы профиля ~/.bash_profile ~/.bashrc.

Также проверьте, доступно ли вышеуказанное в /etc/pam.d/password-auth и /etc/pam.d/system-auth, чтобы быть уверенным, что /etc/security/limits.conf загружается:

session requires pam_limits.so

Ответ или решение

Чтобы решить проблему с установкой размера стека в RHEL 7.9, важно понять, почему внесенные изменения в /etc/security/limits.conf не влияют на размер стека как ожидалось.

Понимание проблемы

Во-первых, необходимо осознать, что изменение лимитов ресурсов через команду ulimit влияет только на текущую сессию и дочерние процессы. Это локальные изменения, которые не распространяются на все системы или новые сеансы. Когда вы задаете:

ulimit -s unlimited

Это воздействует только на текущий shell, в котором вы находитесь, и не будет применяться к будущим сессиям после выхода.

Настройки в /etc/security/limits.conf

Файл /etc/security/limits.conf и файлы в директории /etc/security/limits.d/ предназначены для постоянной установки лимитов на уровне системы. Однако, изменения в этом файле вступают в силу только для новых сессий shell, после выхода и повторного входа в систему.

Потенциальные причины проблемы

  1. Конфликтующие параметры в /etc/security/limits.d/:

    • Проверьте наличие файлов в директории /etc/security/limits.d/, которые могут переопределять ваш параметр stack.
  2. Не загружен модуль pam_limits:

    • Убедитесь, что строка session required pam_limits.so присутствует в файлах /etc/pam.d/password-auth и /etc/pam.d/system-auth.
  3. Использование пользовательских скриптов:

    • Проверьте файлы пользователя, такие как ~/.bash_profile, ~/.bashrc, которые могут переопределять параметры, установленные через PAM.

Решение

  1. Откройте и проверьте существующие настройки в /etc/security/limits.conf. Этот файл должен содержать строки:

    * stack hard unlimited
    * stack soft unlimited
  2. Проверьте все файлы в /etc/security/limits.d/ на возможные конфликты и переопределения.

  3. Убедитесь, что строка session required pam_limits.so включена в обоих PAM конфигурационных файлах /etc/pam.d/password-auth и /etc/pam.d/system-auth.

  4. Перепроверьте пользовательские файлы ~/.bash_profile и ~/.bashrc на возможные конфликты с настройками лимитов.

  5. Для применения изменений требуется завершение текущей сессии и повторный вход в систему. Если изменения все еще не действуют, попробуйте перезагрузить систему для снятия всех кэшированных настроек.

Заключение

Если после выполнения всех этих шагов проблема не исчезает, может понадобиться проведить более тщательную проверку системных настроек и, возможно, рассмотреть другие конфигурационные файлы, которые могут влиять на поведение ulimit.

Оцените материал
Добавить комментарий

Капча загружается...