Je viens de réaliser que mon système ne limite pas correctement la quantité de processus par utilisateur, ce qui n'empêche pas un utilisateur de lancer une bombe fourchette et de planter le système entier:
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.
Est-ce un bug ou pourquoi ignore-t-il la limite limits.conf
et pourquoi n'applique-t-il pas la limite qui le ulimit -n
prétend?
PS: Je ne pense vraiment pas que la limite de mémoire soit atteinte avant la limite de processus. Cette machine a 8 Go de RAM et n'en utilisait que 4% au moment où j'ai lâché la bombe à fourche.
ÉDITER:
J'ai réussi à reproduire cela sur un CD live. Je suppose donc que cela doit être un bug. Il finit par tuer tous les processus, y compris les éléments critiques du système comme X11, SSHD, etc.
Tout utilisateur peut planter le système.
user@thebe:~$ ulimit -u
1024
ulimit -u
j'obtiens 31325. Quand je cours, ulimit -u 512
ça passe à 512. Quand je lance cette fourche-bombe, le reste de mon système est très bien.
ulimit -u