Die “Fork Bomb” und die limits.conf
Ich wurde heute gebeten, doch mal folgende Zeile in der nächstbesten Shell auszuführen:
$ :(){ :|:& };:
Ich könnte nun die Zeile unerklärt lassen. Wissend, dass andere Nutzer der Shell diese aus lauter neugierde ausprobieren. Mache ich aber nicht. Punkt.
Der Anschauligkeit halber hier das Script erst noch einmal in der Standartnotation:
:() {
: | : &
};
:
Dieses kleine Script erzeugt eine Funktion namens “:”, welche sich selbst rekursiv aufruft. Zwei mal. Im Hintergrund. Weil sich die Funktion (ewig) immer und immer wieder selbst aufruft, frisst das sehr schnell eine menge Systemressourcen. Deswegen der Name “Fork Bomb”.
Wer das immer noch nicht versteht, hier eine noch einfachere Version:
forkbomb() {
forkbomb | forkbomb &
};
forkbomb
In der Funktion wird eine sogenannte Pipe erzeugt, welche zwei weitere Instanzen der Funktion (jede wird ein eigener Prozess, nicht nur ein “Child”, welches wenn der Urprozess gekillt, ebenfalls beendet wird.) in den Hintergrund forkt. Für jede Instanz der Funktion entstehen Zwei neue. Das Ergebnis ist eine gewaltige Nummer von Prozessen, welche sehr schnell erzeugt werden.
Wie also unschwer zu erkennen ist, sollte das nicht leichtsinnig ausprobiert werden.
Übrigens sind damit, gerade auf Multiusersystemen fürchterliche Horrorszenarien (für den admin, versteht sich) denkbar. Die Zahl der Prozesse, die ein User maximal gleichzeitig aufrufen kann lässt sich unter Debian (und Derivaten wie Ubuntu) in der Datei /etc/security/limits.conf festlegen. Mehr dazu gibt es hier und hier.
(Dieser Beitrag steht unter einer Creative-Commons-Lizenz und wurde erstmals am Mittwoch, dem 27. Juni 2007 um 1:44 auf jeremy.lonien.de veröffentlicht.)
Über diesen Beitrag
Sie lesen gerade: "Die “Fork Bomb” und die limits.conf",
... Ein Beitrag auf [pimp my shell]
- Autor:
- Jeremy
- Veröffentlicht:
- 2 Juli 2007 um 16:10
- Kategorie:
- hintergrundwissen
-
2.7.2007 / 16:13
Die “Fork Bomb” und die limits.conf
Ich wurde heute gebeten, doch mal folgende Zeile in der nächstbesten Shell auszuführen:
$ :(){ :|:& };:
Ich könnte nun die Zeile unerklärt lassen. Wissend, dass andere Nutzer der Shell diese aus lauter neugierde ausprobieren. Mache ich aber ni… -
3.7.2007 / 0:01
Hallo Jeremy,
das haette ich nun aber nicht gedacht, das ein Einzeiler einen solchen Schaden anrichten kann.
Guter Artikel .. dankesehr :)
Gruß
Gregor
-
3.7.2007 / 0:13
Man lernt nie aus. ;-)
-
7.7.2007 / 2:54
sehr informativ. dane schön. ich hatte keine ahnung, mit wiewenig man schon so viel schaden anrichten kann
-
16.7.2007 / 21:09
Author der originalen Fork-Bomb ist übrigens Jaromil (http://rastasoft.org) Urheber auch der Dyne::bolic Linuxdistribution.
Show respect where its due ;-)
Schöner Artikel, danke.
-
16.7.2007 / 21:17
@Christian: Danke, das wusste ich nicht. :-)
(Allerdings wird bei einem 13-Zeichen-Einzeiler die Schöpfungshöhe nicht so ganz erreicht, findest du nicht?)
-
23.9.2007 / 9:28
@Jeremy
Es kommt doch nicht auf die Länge an, sondern darauf, was man damit anzustellen in der Lage ist.(Doppeldeutigkeit ist im Deutschen eine Qual … ;-))
-
12.11.2007 / 13:00
“das haette ich nun aber nicht gedacht, das ein Einzeiler einen solchen Schaden anrichten kann.”
rm -Rf /*
Sehr fieser Einzeiler ^^
-
16.12.2007 / 15:53
… mit dem Unterschied, dass rm -Rf /* nur mit root-Rechten fatale Folgen hat, während die fork bomb unter Standardeinstellungen auch durch einen gewöhnlichen User ausgeführt werden kann.
-
28.11.2010 / 10:56
[...] [...]
-
30.11.2010 / 16:13
[...] [...]
Hinterlasse einen Kommentar
XHTML: Folgende Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
navigation
- [1] was ist [ pimp my shell ] ?
- [2] programme
- [3] skripte / dotfiles
- [4] shellshots
- [5] mitmachen
- [6] autoren
- [7] einloggen
- [8] impressum
aussehen
ältere beiträge
- 08.26 lsr – Das fehlende Listing
- 06.18 wirklich? so einfach?
- 06.17 fbcmd – update
- 06.04 worklog – die zeit im griff
- 05.30 google-reader >> snownews
- 05.28 fbcmd – facebook in der shell
- 05.28 bitlbee – alles in einem!
- 05.16 NoPaste/pastebin-Service über die Shell mit curl und sprunge.us
- 04.15 Die Heirloom-Tools – Unix unter Linux
- 02.13 dvtm – dwm für die Konsole
beitrags-archiv
- August 2010 (1)
- Juni 2010 (3)
- Mai 2010 (3)
- Mai 2008 (1)
- April 2008 (1)
- Februar 2008 (4)
- Januar 2008 (1)
- Dezember 2007 (2)
- September 2007 (1)
- August 2007 (1)
- Juli 2007 (6)
- Juni 2007 (1)
kategorien
- allgemein (17)
- berichte (7)
- fun (2)
- gnu_screen (2)
- hintergrundwissen (3)
- how-tos (11)
- internes (6)
- programme (31)
- shells (6)
- tutorials (6)
- user-skripte (2)
- vim (5)
- webseiten (5)
11 Kommentare
Zum Kommentarformular | Kommentar rss [?] | trackback uri [?]