Перезагрузить /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/

Другие вопросы по тегам