¿Cómo prevenir la bomba tenedor?

14

Para evitar la bomba tenedor, seguí este http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm

ulimit -arefleja la nueva configuración, pero cuando ejecuto (como rooten bash) :(){ :|:&};:la VM todavía funciona con la CPU máxima + RAM y el sistema se congelará.

¿Cómo garantizar que los usuarios no derriben el sistema utilizando bombas de horquilla o ejecutando una aplicación con errores?

OS: RHEL 6.4

usuario44441
fuente
No puedo reproducirlo aquí. ¿Estás intentando eso rootpor casualidad? ¿Desde qué shell lo estás intentando? (el espacio que falta después {sugiere zshpero tampoco puedo reproducirlo allí).
Stéphane Chazelas
Stephane Chazelas: 1] Estaba corriendo como root, lo probé con el usuario normal, funciona. 2] El espacio que falta es un error tipográfico, estoy usando bash. Lo siento. 3] ¿Es que ulimit no puede moderar al usuario 'root'?
user44441
@ stephane-chazelas 1] Estaba corriendo como root, lo probé con el usuario normal, funciona. 2] El espacio que falta es un error tipográfico, estoy usando bash. Lo siento. 3] ¿Es que ulimit no puede moderar al usuario 'root'?
user44441

Respuestas:

8

El superusuario o cualquier proceso con las capacidades CAP_SYS_ADMIN o CAP_SYS_RESOURCE no se ven afectados por esa limitación, eso no es algo que se pueda cambiar. rootsiempre puede bifurcar procesos.

Si no se confía en algún software, no debería ejecutarse como de roottodos modos.

Stéphane Chazelas
fuente
3
A menos que haga algo especial, casi nada debería ejecutarse como root de todos modos. root es la cuenta que usa cuando está cansado de tratar de descubrir qué privilegios / derechos necesita para resolverlo o algún servicio fundamental del sistema.
Bratchley
11

Para que este cambio sea generalizado, deberá agregar estos límites a todo el entorno. Los cambios que utilizan el ulimitcomando son solo para el entorno actual.

NOTA: ¡ Esto no tendrá ningún efecto en el usuario root!

Ejemplo

Edite este archivo: vi /etc/security/limits.confy agregue entradas al archivo que limitan el número de procesos ( nproc) que un usuario específico o un grupo de usuarios pueden tener.

vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200

NOTA: Hay más ejemplos en ese archivo. Tenga cuidado con el uso de "todos" (también conocido como *), esto también limitará las cuentas del sistema.

Referencias

slm
fuente
Si bien "todos" limitará las cuentas del sistema, la mayoría de los servicios que ejecutan esas cuentas del sistema no pasan pam_limits.
jordanm
¿Es que ulimit no puede moderar al usuario 'root'?
user44441
Solo como una idea general para agregar más a la publicación, es posible que desee agregar algo sobre pam_cgroup a la publicación ya que la plataforma del OP lo admite y pam_limitseventualmente será reemplazado por eso una vez que los cgroups obtengan una adopción más amplia.
Bratchley
Además, dado que parece que el OP está jugando con las políticas de uso de recursos, cgroupsles daría mejores mandos para la utilización de la red y la CPU.
Bratchley