La protección de la bomba de la horquilla no funciona: la cantidad de procesos no está limitada

Acabo de darme cuenta de que mi sistema no está limitando la cantidad de procesos por usuario de manera adecuada, por lo que no impide que un usuario haga una bomba de bifurcación y bloquee todo el sistema:

[email protected]:~$ cat /etc/security/limits.conf | grep user user hard nproc 512 [email protected]:~$ ulimit -u 1024 [email protected]:~$ :(){ :|:& };: [1] 2559 [email protected]:~$ 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. 

¿Se trata de un error o por qué se ignora el límite en limits.conf y por qué no se aplica el límite que ulimit -n dice que es?

PD: Realmente no creo que el límite de memoria se scope antes del límite del proceso. Esta máquina tiene un ram de 8GB y estaba usando solo el 4% en el momento en que tiré la bomba de la horquilla.

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, incluyendo cosas críticas del sistema como X11, SSHD, etc.

Cualquier usuario puede bloquear el sistema.

Resulta que /etc/security/limits.conf funciona, pero necesita reiniciarse antes de que se interprete. Un cierre de sesión no es suficiente.

Recomiendo a cualquiera hasta un límite al archivo de configuración como

 user hard nproc 512 

Reemplace al user con cualquier nombre de usuario que quiera limitar.

O mejor:

 @group hard nproc 512 

Reemplace el group con cualquier group usuarios que desee limitar.

    Intereting Posts