Acabo de darme cuenta de que mi sistema no está limitando la cantidad de procesos por usuario correctamente, por lo tanto, no impide que un usuario haga una bomba de horquilla y bloquee todo el sistema:
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.
¿Es esto un error o por qué ignora el límite limits.confy por qué no aplica el límite que ulimit -ndice ser?
PD: Realmente no creo que se alcance el límite de memoria antes del límite del proceso. Esta máquina tiene 8 GB de RAM y estaba usando solo el 4% cuando solté la bomba tenedor.
EDITAR:
Logré reproducir esto en un CD en vivo. Así que supongo que esto debe ser un error. Básicamente termina matando todos los procesos, incluidos los elementos críticos del sistema como X11, SSHD, etc.
Cualquier usuario puede bloquear el sistema.
process
ulimit
resource-limiting
d_inevitable
fuente
fuente

ulimit -uuser@thebe:~$ ulimit -u1024ulimit -ume sale 31325. Cuando corroulimit -u 512va a 512. Cuando corro esa bomba tenedor, el resto de mi sistema está bien.Respuestas:
Resulta que
/etc/security/limits.confsí funciona, pero necesita reiniciar antes de que se interprete. Un cierre de sesión no es suficiente.Recomiendo a cualquiera que limite el archivo de configuración como
Reemplace
usercon cualquier nombre de usuario que desee limitar.O mejor:
Reemplace
groupcon cualquier grupo de usuarios que desee limitar.fuente