:(){ :|:& };:
..definiert eine Funktion namens :
, das sich selbst spawnt (zweimal, eine Pipe in die andere) und sich selbst in den Hintergrund setzt.
Mit Zeilenumbruch:
:()
{
:|:&
};
:
Umbenennen der :
Funktion zu forkbomb
:
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Sie können solche Angriffe verhindern, indem Sie ulimit
verwenden um die Anzahl der Prozesse pro Benutzer zu begrenzen:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
Dauerhafter können Sie /etc/security/limits.conf
verwenden (zumindest unter Debian und anderen), zum Beispiel:
* hard nproc 50
Das bedeutet natürlich, dass Sie nur 50 Prozesse ausführen können. Je nachdem, was die Maschine tut, möchten Sie dies möglicherweise erhöhen!
Das definiert eine Funktion namens :
die sich zweimal selbst aufruft (Code:: | :
). Dies geschieht im Hintergrund (&
). Nach dem ;
die Funktionsdefinition ist fertig und die Funktion :
beginnt.
Also beginnt jede Instanz von :zwei neue :und so weiter... Wie ein binärer Baum von Prozessen...
In einfachem C geschrieben ist das:
fork();
fork();