Защита от вилочной бомбы не работает: количество процессов не ограничено

Я просто пришел к выводу, что моя система не ограничивает количество процессов на пользователя должным образом, таким образом, не препятствуя тому, чтобы пользователь делал вилочную бомбу и разрушал всю систему:

user@thebe:~$ cat /etc/security/limits.conf | grep user
user        hard    nproc   512
user@thebe:~$ ulimit -u
1024
user@thebe:~$ :(){ :|:& };:
[1] 2559
user@thebe:~$ ht-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
...
Connection to thebe closed by remote host.

Это ошибка или почему игнорируется лимит в limits.conf и почему не применяется ограничение, которое ulimit -n утверждает, что это?

PS: я действительно не думаю, что ограничение памяти достигло предела процесса. Эта машина имеет 8 ГБ оперативной памяти, и она использовала только 4% в то время, когда я сбросил вилочную бомбу.

РЕДАКТИРОВАТЬ:

Мне удалось воспроизвести это на live CD. Так что я думаю, это должно быть ошибкой. В основном это приводит к уничтожению всех процессов, включая критичные для системы, такие как X11, SSHD и т. Д.

Любой пользователь может сбить систему.

1 ответ

Решение

Получается что /etc/security/limits.conf работает, но нуждается в перезагрузке, прежде чем интерпретировать. Выйти не достаточно.

Рекомендую кому-нибудь ограничить конфигурационный файл вроде

user hard nproc 512

замещать user с любым именем пользователя, которое вы хотели бы ограничить.

Или лучше:

@group hard nproc 512

замещать group с любой группой пользователей, которую вы хотите ограничить.

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