Перезагрузить /etc/security/limits.conf
Я бы хотел:
- установить мягкое ограничение в 64 ГБ для резидентной памяти (чтобы неопытные пользователи могли убить свои процессы запуска, но опытные пользователи могут повысить ограничение для процессов, требующих памяти)
- увеличьте жесткое ограничение для nofile, но сохраните мягкое ограничение на 1024 (поэтому, если определенной программе требуется больше файловых дескрипторов, пользователь может предоставить их, но программы run-amok не получат их).
Насколько я вижу, я должен быть в состоянии сделать это в /etc/security/limits.conf
(или в /etc/security/limits.d/*
):
* soft rss 64000000
* hard nofile 50000
* soft nofile 1024
Однако я не могу найти способ перезагрузить эти значения без перезагрузки. Я прочитал, что значения загружаются при входе в систему; это работает, когда я делаю su - user
но это не работает через ssh user@localhost
,
У меня есть файл pam_limits.so в /etc/pam.d:
/etc/pam.d/login:session required pam_limits.so
/etc/pam.d/sshd:session required pam_limits.so
/etc/pam.d/su:session required pam_limits.so
У меня есть PAM в sshd_config:
/etc/ssh/sshd_config:UsePAM yes
Я знаю, что могу установить значения с помощью ulimit
а также sysctl
, но я хотел бы проверить, что /etc/security/limits.conf
делает правильные вещи без перезагрузки.
Как я могу убедиться, что значения устанавливаются, когда люди входят в систему, используя ssh без перезагрузки?
2 ответа
Хмм....
UseLogin
не нужен
UsePAM yes
нужно.
Перезапуск sshd
нужен только если UsePAM
был изменен с нет на да.
Отключение моего ~/.ssh/config
нужно было очень сильно!
я имел Control
* заявления в моем ~/.ssh/config
который повторно использовал канал ssh, и поэтому я не обнаружил бы изменения.
Спасибо Samed Beyribey и Quanta, чья помощь дала мне идею бежать ssh -vv
который дает очень разные результаты, когда у вас есть Control
* заявления.
Я прочитал, что значения загружаются при входе в систему; это работает, когда я делаю
su - user
но это не работает черезssh user@localhost
,
Причина в том, что по умолчанию SSH открывает оболочку без входа в систему, поэтому ограничения не применяются.
Чтобы сделать это использует оболочку входа, отредактируйте sshd_config
файл и раскомментировать / изменить #UseLogin no
в UseLogin yes
:
gentoo ~ # grep UseLogin /etc/ssh/sshd_config
#UseLogin no
gentoo ~ # sed -i.bak 's/#UseLogin no/UseLogin yes/' /etc/ssh/sshd_config
gentoo ~ # grep UseLogin /etc/ssh/sshd_config
UseLogin yes
Перезагрузить sshd
и попробуй еще раз.
Источник: http://znx.no/2011/01/ssh-and-limits/