Чтобы предотвратить вилочную бомбу, я следовал этому http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm
ulimit -a
отражает новые настройки, но когда я запускаю (как root
в bash
), :(){ :|:&};:
виртуальная машина все еще работает на максимальном CPU + RAM, и система зависает.
Как гарантировать, что пользователи не будут сбивать систему с помощью вилочных бомб или запускающего приложение с ошибками?
ОС: RHEL 6.4
root
нибудь случайно? Из какой оболочки вы пробуете это? (пропущенное место после{
предлагает,zsh
но я не могу воспроизвести его там).Ответы:
На суперпользователя или любой процесс с возможностями CAP_SYS_ADMIN или CAP_SYS_RESOURCE это ограничение не влияет, его нельзя изменить.
root
всегда может форк процессов.Если какое-то программное обеспечение не является доверенным, оно не должно работать в
root
любом случае.источник
Чтобы сделать это изменение распространенным, вам нужно добавить эти ограничения для всей среды. Изменения с использованием
ulimit
команды относятся только к текущей среде.ПРИМЕЧАНИЕ. Это не повлияет на пользователя root!
пример
Отредактируйте этот файл:
vi /etc/security/limits.conf
и добавьте в него записи, ограничивающие количество процессов (nproc
), которое может иметь конкретный пользователь или группа пользователей.ПРИМЕЧАНИЕ. В этом файле больше примеров. Будьте осторожны с использованием «all» (иначе
*
), это также ограничивает системные учетные записи.Ссылки
источник
pam_limits
.pam_limits
конечном итоге будет заменена этим, когда cgroups получит более широкое распространение.cgroups
это дало бы им лучшие ручки для использования сети и ЦП.