Ich habe gerade festgestellt, dass mein System die Anzahl der Prozesse pro Benutzer nicht richtig begrenzt, sodass ein Benutzer nicht daran gehindert wird, eine Gabelbombe auszuführen und das gesamte System zum Absturz zu bringen:
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.
Ist dies ein Fehler oder warum wird das Limit ignoriert limits.conf
und warum wird das Limit, das es ulimit -n
behauptet, nicht angewendet ?
PS: Ich glaube wirklich nicht, dass das Speicherlimit vor dem Prozesslimit erreicht wird. Diese Maschine hat 8 GB RAM und verbrauchte nur 4% davon, als ich die Gabelbombe fallen ließ.
BEARBEITEN:
Ich habe es geschafft, dies auf einer Live-CD zu reproduzieren. Ich denke, das muss ein Fehler sein. Grundsätzlich werden alle Prozesse beendet, einschließlich systemkritischer Dinge wie X11, SSHD usw.
Jeder Benutzer kann das System zum Absturz bringen.
user@thebe:~$ ulimit -u
1024
ulimit -u
renne, bekomme ich 31325. Wenn ich renne ulimit -u 512
, geht es los 512. Wenn ich diese Gabelbombe laufen lasse , ist der Rest meines Systems in Ordnung.
ulimit -u