Как предотвратить вилочную бомбу?

14

Чтобы предотвратить вилочную бомбу, я следовал этому http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm

ulimit -aотражает новые настройки, но когда я запускаю (как rootв bash), :(){ :|:&};:виртуальная машина все еще работает на максимальном CPU + RAM, и система зависает.

Как гарантировать, что пользователи не будут сбивать систему с помощью вилочных бомб или запускающего приложение с ошибками?

ОС: RHEL 6.4

user44441
источник
Я не могу воспроизвести это здесь. Вы пытаетесь это как- rootнибудь случайно? Из какой оболочки вы пробуете это? (пропущенное место после {предлагает, zshно я не могу воспроизвести его там).
Стефан Шазелас
Stephane Chazelas: 1] Я работал от имени пользователя root, пробовал с обычным пользователем, все работает. 2] Недостаток места - опечатка, я использую bash.Sorry. 3] Неужели ulimit не может модерировать пользователя root?
user44441
@ stephane-chazelas 1] Я работал от имени пользователя root, пробовал с обычным пользователем, он работает. 2] Недостаток места - опечатка, я использую bash.Sorry. 3] Неужели ulimit не может модерировать пользователя root?
user44441

Ответы:

8

На суперпользователя или любой процесс с возможностями CAP_SYS_ADMIN или CAP_SYS_RESOURCE это ограничение не влияет, его нельзя изменить. rootвсегда может форк процессов.

Если какое-то программное обеспечение не является доверенным, оно не должно работать в rootлюбом случае.

Стефан Шазелас
источник
3
Если это не делает что-то особенное, почти ничего не должно запускаться как root в любом случае. root - это учетная запись, которую вы используете, когда устали пытаться выяснить, какие привилегии / права вам нужны для ее выяснения или какой-либо фундаментальной системной службы.
Братчли
11

Чтобы сделать это изменение распространенным, вам нужно добавить эти ограничения для всей среды. Изменения с использованием ulimitкоманды относятся только к текущей среде.

ПРИМЕЧАНИЕ. Это не повлияет на пользователя root!

пример

Отредактируйте этот файл: vi /etc/security/limits.confи добавьте в него записи, ограничивающие количество процессов ( nproc), которое может иметь конкретный пользователь или группа пользователей.

vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200

ПРИМЕЧАНИЕ. В этом файле больше примеров. Будьте осторожны с использованием «all» (иначе *), это также ограничивает системные учетные записи.

Ссылки

SLM
источник
Хотя «all» ограничивает системные учетные записи, большинство служб, которые запускаются этими системными учетными записями, не проходят pam_limits.
Иордания
Неужели ulimit не может модерировать пользователя root?
user44441
Точно так же, как общая идея для добавления большего к посту, вы можете захотеть добавить что-то о pam_cgroup к посту, так как платформа OP поддерживает его и в pam_limitsконечном итоге будет заменена этим, когда cgroups получит более широкое распространение.
Братчли
Кроме того, поскольку кажется, что OP играет с политиками использования ресурсов, cgroupsэто дало бы им лучшие ручки для использования сети и ЦП.
Братчли