limits.conf ulimits не применяются к изолированным процессам

limits.conf ulimits не применяются к изолированным процессам

Мы разрешаем пользователям выполнять скрипты на наших серверах. Наша модель безопасности включает chrooting их. Мы хотим иметь возможность применять к ним ограничения ulimit, и лучший способ сделать это, по-видимому, в/etc/security/limits.conf

Но, похоже, это не работает. Вот что мы установили limits.conf:

@registered_users    -    priority   7
@registered_users    -    nice       7
*                    -    priority   9
*                    -    nice       9

И это работает в некоторых случаях:

sudo -u testuser python

Даст процесс Python с приятностью 9 (не 7, как ни досадно)

НО

sudo chroot --userspec=testuser:registered_users python

дает процесс Python с уровнем приятности 0.

есть какие-нибудь подсказки?

Мы пробовали добавить session required pam_limits.so, /etc/pam.d/common-sessionно безрезультатно.

решение1

Настройки в /etc/security/limits.conf не работают внутри chroot, потому что нет программы, использующей pam_limits для их установки. Они работают, когда вы используете sudo, потому что конфигурация PAM sudo вызывает pam_limits.

Очевидный ответ — вызвать что-то внутри chroot, что использует pam_limits, например «su», как здесь говорится:https://lists.debian.org/debian-user/2010/09/msg01398.html(хотя вам придется раскомментировать строку, которая использует pam_limits в /etc/pam.d/su, поскольку она закомментирована по умолчанию).

То есть, предположим, что ваш chroot-каталог — /srv/chroot, и вы хотите выполнить /usr/bin/python, вы можете попробовать что-то вроде этого:

sudo chroot /srv/chroot su testuser /usr/bin/python

Я думаю, что sudo тоже справится с этой задачей:

sudo chroot /srv/chroot sudo -u testuser /usr/bin/python

Но я могу говорить только за "su", что я и использую в таких случаях. Пожалуйста, попробуйте и скажите, сработало ли у вас.

Связанный контент