que - lista completa de comandos linux pdf
El comando Bash:(){: |: &}; generará procesos para la muerte del kernel. ¿Puedes explicar la sintaxis? (2)
Eso define una función llamada :
que se llama dos veces (Código : | :
. Lo hace en el fondo ( &
). Después de ;
la definición de la función está hecha y la función :
comienza.
Entonces cada instancia de: comienza dos nuevas: y así sucesivamente ... Como un árbol binario de procesos ...
Escrito en el plano C que es:
while(1) {
fork();
}
Me encontré con esta página y no puedo entender cómo funciona esto.
Este comando "genera de manera exponencial subprocesos hasta que su caja se bloquea".
¿Pero por qué? Lo que menos asimilo son los dos puntos.
user@host$ :(){ :|:& };:
:(){ :|:& };:
..define una función llamada :
que se genera a sí misma (dos veces, una canalización a la otra) y los fondos mismos.
Con saltos de línea:
:()
{
:|:&
};
:
Cambiar el nombre de la función :
a forkbomb
:
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Puede evitar dichos ataques utilizando ulimit
para limitar el número de procesos por usuario:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
De forma más permanente, puede usar /etc/security/limits.conf
(en Debian y otros, al menos), por ejemplo:
* hard nproc 50
Por supuesto, eso significa que solo puede ejecutar 50 procesos, ¡puede aumentar esto dependiendo de lo que la máquina esté haciendo!