Вопрос или проблема
В файле /etc/security/limit.conf я добавил следующие значения:
user1 - nproc unlimited
user2 - nproc unlimited
Оба user1 и user2 имеют sudo привилегии, и я использовал user1 для внесения этого изменения. Затем я вышел из сервера и снова вошел.
Когда я проверяю как user1, команда ulimit -u выдает мне значение ‘Без ограничений’.
Однако, когда я проверяю как user2, команда ulimit -u выдает мне значение 10000.
Откуда может браться это значение?
Похоже, что процесс управления кластером (ambari) изменял значения для этого конкретного пользователя.
Ответ или решение
Чтобы установить и обеспечить корректное применение значений nproc
для всех пользователей в Linux, необходимо учитывать несколько аспектов, особенно когда используются различные инструменты управления кластерами и системами. В представленном вами примере, после размещения настроек в файле /etc/security/limits.conf
и их проверки, вы заметили, что для пользователя user1
значение ulimit -u
отображает "бессрочно", в то время как у пользователя user2
это значение устанавливается в 10000.
Причины проблемы
-
Применение настроек limit.conf: Обратите внимание, что настройки из файла
limits.conf
, которые прописаны для пользователей, могут не применяться в некоторых сценариях, например, если пользователь запускается в сессии, где системные ограничения могут быть переопределены (например, при использовании системных управлений, таких как Ambari). -
Отдельные конфигурации для пользователей: Возможно, для
user2
установлены другие ограничения на уровне групп. Проверьте файл/etc/security/limits.d/
, где могут находиться дополнительные конфигурации, касающиеся лимитов для групп пользователей, которые могут повлиять наuser2
. -
Конфигурации системных daemons или служб: В случае, если вы используете инструменты управления кластерами, такие как Ambari, они могут переопределять значения
nproc
при старте процессов или служб. Эти настройки могут находиться в конфигурационных файлах самой службы или в скриптах их инициализации.
Рекомендации по устранению проблемы
-
Перепроверьте конфигурации пользователей:
- Убедитесь, что в файлах
/etc/security/limits.conf
и/etc/security/limits.d/
нет конфликтующих записей для пользователяuser2
.
- Убедитесь, что в файлах
-
Проверьте настройки Ambari:
- Изучите конкретные настройки Ambari, относящиеся к пользовательским ограничениям. Обычно такие сервисы предоставляют возможность настроить лимиты, и, вероятно, есть необходимость обновить их настройку для соответствия вашим требованиям.
-
Запуск shell:
- Проверьте, как запускается shell для
user2
. Если он запускается через скрипты или другие механизмы (например, через системные службы), настройки изlimits.conf
могут не передаваться.
- Проверьте, как запускается shell для
-
Тестирование:
- Проведите тестирование, создав временную учетную запись без привязки к специфическим инструментам, чтобы убедиться, что ограничение
nproc
работает корректно в стандартной среде.
- Проведите тестирование, создав временную учетную запись без привязки к специфическим инструментам, чтобы убедиться, что ограничение
-
Перезагрузка:
- После внесения любых изменений в конфигурации, включая файл
limits.conf
, рекомендуется перезагрузить систему, чтобы убедиться, что все изменения были применены.
- После внесения любых изменений в конфигурации, включая файл
В качестве заключения, для эффективного контроля над процессами и пользовательскими лимитами в любой системе, убедитесь, что все конфигурационные файлы и сервисы, взаимодействующие с пользователями, настроены последовательно. Это гарантирует, что ваши настройки будут применяться без исключений, обеспечивая нужный уровень контроля и безопасности в вашей операционной системе.