Wir schätzen GNU/Linux als Betriebssystem nicht nur wegen seiner Flexibilität, sondern auch wegen seiner Sicherheit. Doch Achtung, der Feind sitzt meistens vor der eigenen Tastatur. Insbesondere wenn sich Semiprofessionelle im Terminal bewegen (so wie ich :), können fatale Fehler passieren, die durch Unwissenheit oder Copy&Paste-Aktionen eingeleitet werden. Daher möchte ich in diesem Artikel auf die 'Befehle aus der Hölle' hinweisen.
Es gibt im Internet Sammlungen solcher Befehle; die Suche nach "linux most dangerous terminal commands" bringt euch zu den richtigen Seiten. Dieser Artikel erhebt keinen Anspruch auf Vollständigkeit, sondern dient eher der Sensibilisierung von weniger erfahrenen Anwender:innen, die sich vielleicht erst seit Kurzem ins Terminal getraut haben. Bevor wir einen Blick in die Hölle werfen, warne ich eindringlich davor, diese Befehle auszuprobieren. Daher habe ich nur Screenshots und keinen kopierbaren Code verwendet. Wer den Effekt der Befehle dennoch sehen möchte, sollte dafür eine virtuelle Maschine verwenden, die ausschliesslich zum Zerstören eingerichtet wurde.
Aus oben genannten und Zeitgründen habe ich die Befehle nicht selbst durchgespielt. Daher kann es sein, dass der eine oder andere Befehl von aktuellen GNU/Linux-Distributionen bzw. Terminal-Shells abgefangen wird. Seid also nicht enttäuscht, wenn eure virtuelle Maschine nicht bei jedem Befehl zu Staub zerfällt oder in Flammen aufgeht. Am besten probiert ihr es gar nicht erst aus. Fork-Bomben könnten auch über eine VM hinaus, Schaden anrichten, indem die Hardware überlastet wird. So, genug der Warnung, lasst die Finger davon.
1. Löschen über alles
Der Befehl zum Löschen von Dateien in Terminal heisst rm (remove). Da es auf der Kommandozeile kein Zurück und keinen Papierkorb gibt, ist rm immer mit Vorsicht zu geniessen. Normalerweise wendet man den Befehl auf eine einzelne Datei an. Die gefährliche Variante sieht so aus:
Der Parameter -rf bewirkt, dass alle Dateien inklusive der Unterverzeichnisse gelöscht werden, und zwar ohne nachzufragen, ob man das wirklich möchte. Mit / wird das Root-Verzeichnis als Ausgangspunkt der Löschaktion bestimmt. Als Ergebnis davon erhält man eine leere Festplatte, bzw. eine gelöschte Root-Partition, um genauer zu sein.
2. Output auf die Platte
Terminalbefehle erzeugen in der Regel ein Ergebnis, welches auf stdout ausgegeben wird (das Terminal). Man kann die Ausgabe aber auch in eine andere Richtung lenken; wie wäre es mit eurer Hauptpartition? Das Umlenken geschieht mit dem > Operator, z. B. so:
Als Kommando empfiehlt sich hier shred, was dazu dient, Dateien unwiederbringlich zu zerstören, indem die Datei mit Zufallsdaten überschrieben wird. In diesem Fall wäre das eure Festplatte.
3. Die Fork-Bombe
Vor der Erläuterung zeige ich euch den Befehl:
Was aussieht wie ein ASCII-Emoji, ist in Wahrheit eine Fork-Bombe, die nicht so leicht zu verstehen ist. Dieser Befehl erstellt eine Funktion mit dem Namen : und definiert den Inhalt der Funktion so, dass sie sich selbst ausführt und in einen anderen Aufruf von sich selbst überleitet. Auf diese Weise läuft die Funktion im Vordergrund, während derselbe Prozess im Hintergrund ausgeführt wird. Die Funktion wird ausgeführt und wiederholt sich immer wieder, sodass sie schnell alle Ressourcen verbraucht, bis das System einfriert.
4. Nichts an Datei
Dieser Höllenbefehl ist ähnlich zu Nr. 2. In diesem Beispiel wende ich ihn auf eine wichtige Datei an:
Das > ist eine Shell Redirection für cat /dev/null > file. Damit wird die Datei mit Nichts (dem Inhalt von /dev/null) überschreiben und ist danach leer. Das ist fatal, wenn der Befehl auf wichtige Konfigurationsdateien angewendet wird. Die Hauptgefahr liegt aber darin, dass man > Datei schnell einmal aus Versehen eingetippt hat.
5. Ja, ich will !!
Die History der ausgeführten Shell-Befehle ist eine nützliche Quelle für Tippfaule oder Vergessliche. Sie kann aber gefährlich werden:
Dieser Befehl führt den ersten Eintrag aus der History mit Root-Rechten aus. Da sich niemand daran erinnert, welches der erste Historyeintrag war, ist der Befehl ein russisches Roulette. Übrigens, mit !! führt ihr den letzten Befehl aus der History erneut aus. Das ist weniger kritisch, weil ihr euch wahrscheinlich an euren letzten Befehl erinnern könnt.
6. Wie ein Windows-User
Irgendwelche Dateien von irgendwelchen Servern herunterzuladen und auszuführen, ist keine gute Idee. Das machen nur Windows-Anwender:innen. In Foren findet man oft Anleitungen, die genau diese Vorgehensweise vorschlagen. Ein solcher Befehl könnte so lauten:
Mit wget (oder curl) laden wir ein unbekanntes Skript herunter und pipen es an die Shell, damit es direkt ausgeführt wird. Macht das bitte niemals.
7. Aus der Zeit fallen
Nach und nach ersetzt Systemd das zeitgesteuerte Ausführen von Befehlen, was einen eigenen Artikel wert wäre. Dennoch erfüllt auf vielen Installationen Crontab diese Aufgabe. Diese Datei enthält oft wichtige Befehle, die zu bestimmten Zeiten gestartet werden müssen. Mit diesem Befehl macht ihr der Sache ganz schnell ein Ende:
Dummerweise erwartet der Befehl keine Bestätigung.
8. Alles noch einmal
Hier ist noch ein Höllenkommando aus der History:
Damit schickt ihr den gesamten Inhalt der Befehls-Historie an die Shell, um diese Befehle auszuführen. Das führt zu grossen Katastrophe.
9. Schnell mal was Brennen
Wie ich in diesem Artikel angedeutet habe (siehe Kommentare), kann man mit dd ISO-Images auf einen USB-Stick brennen. Der Befehl bewahrt einen nicht vor Fehlern. Wie wäre es damit:
Damit wird eure erste Festplatten-Partition mit Zufallswerten überschrieben.
10. Unnützes Zeug löschen
Räumt ihr gerne auf, oder könnt ihr euch von nichts trennen? Denjenigen, die gerne sammeln, empfehle ich die Distribution NixOS. Bei Einsteigern kommt die Aufräumsucht weniger vor, aber Erfahrenere schauen doch gerne mal ins Verzeichnis /bin und löschen dort alle Dateien, die sie nicht verstehen. Aber auch das Löschen eines einzigen essenziellen Paketes macht euer System unbrauchbar:
Fazit
- Führt keine Befehle im Terminal aus, bei denen ihr euch nicht sicher seid, was sie bewirken.
- Führt keinen der in diesem Artikel genannten Befehle aus.
Quellen: viele, sucht selbst nach: "linux most dangerous terminal commands"
Da fehlt mein persönlicher Liebling :)
chmod -R a-x /
Habe ich in Anfängertagen mal genau so mit /etc gemacht, fand den chmod Befehl so praktisch
Dann war Neuinstallation angesagt
Die gesammte history nochmal ausführen hat etwas poetisches an sich. Mein Leben zieht noch einmal vor meinen Augen vorbei.
Schöner Gedanke. Diesen Befehl fand ich auch am schönsten.
crontab -r ist mir mal aus Versehen passiert. Ja, ich hatte ein Backup. Aber wie perfide diesen gefährlichen Parameter aufs "r" zu legen, wo man doch dauernd "e" tippt, also direkt daneben!
Systemd ersetzt gerade crontab? Verdammt, ich werde alt. Einen Artikel darüber würde ich gerne lesen, hüstel.
Klasse Artikel!
Ich werde mal eine VM aufsetzen und dann alle durchtesten ;-)
Die Beispiel-URL für Nr. 6 ist aber schon sehr plump, m.E...
Zum Klassiker Nr. 1: "rm -fr /" <- Löschen aller französischen Sprachdateien des Systems. :D