Мы разрешаем пользователям выполнять скрипты на наших серверах. Наша модель безопасности включает 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", что я и использую в таких случаях. Пожалуйста, попробуйте и скажите, сработало ли у вас.