WICHTIG: Moderne UEFI-Systeme mounten die Firmware unter dem /sys
Verzeichnis und stellen Sie es dem Betriebssystem zur Verfügung. Führen Sie diesen Befehl NICHT aus auf einem modernen System, da es diese Firmware entfernt und Ihre Maschine im Wesentlichen blockiert.
Das einfachste Szenario, das ich mir vorstellen kann, ist, dass jemand alle Daten von seinem Laufwerk löschen möchte. Es kann vollkommen legitime Gründe dafür geben, und der einfachste Weg, der mir einfällt, ist
rm -rf --no-preserve-root /
Es stellt sich heraus, dass dieses tatsächlich als Beispiel in info rm
angegeben ist :
`--no-preserve-root'
Do not treat `/' specially when removing recursively. This option
is not recommended unless you really want to remove all the files
on your computer.
Ein weiterer absolut triftiger Grund ist, dass Sie ein gemountetes Dateisystem löschen möchten, das Sie chroot
haben -ed hinein. In diesem Fall rm -rf --no-preserve-root /
löscht das System im chroot
Umwelt, aber wird Ihre intakt lassen.
Ich bin mir sicher, dass es noch mehr mögliche Gründe gibt, aber im Allgemeinen scheint es ein sehr vernünftiger Ansatz zu sein, dass mein System es mir erlaubt, damit zu tun, was ich will. Es ist meine Aufgabe, vorsichtig zu sein, das System sollte mich nur in die Lage versetzen, das zu tun, was ich getan haben möchte. Wenn das, was ich will, dumm ist, ist das mein Problem und nicht das des Betriebssystems.
Jedenfalls ist dies eine relativ neue Einschränkung, sie wurde in der 7. Version der POSIX-Spezifikation hinzugefügt (die vorherige ist hier), davor rm -rf /
war ein vollkommen gültiger Befehl. Historisch gesehen, die .
und ..
Verzeichnisse wurden immer vor rm
geschützt , seit 1979, als rm
erwarb zuerst die Fähigkeit, Verzeichnisse zu löschen. Mehr dazu hier.
Die Existenz des --no-preserve-root
Schalter ist nicht auf Hinzufügen zusätzliche Funktionalität, aber überschreiben eine sehr vernünftige Reduzierung der Funktionalität. Dieser Schalter basiert wahrscheinlich auf der Philosophie, dass der Computer tun sollte, was ihm gesagt wird, und dass Befehle verfügbar sein sollten, um jede gewünschte Aktion auszudrücken. Dieser Schalter stammt aus der Zeit vor UEFI, und basierend auf meiner Erfahrung sage ich, dass er jetzt veraltet ist.
In der modernen Praxis wird ohne diesen Schalter die rm
Befehl vermeidet das versehentliche Löschen des Stammverzeichnisses, wenn eine nicht initialisierte Variable oder ein verirrtes Leerzeichen verwendet wird.
rm -rf /${my_directory}
rm -rf / var/log/httpd/*
Lustige Fußnote:Schutz war nicht seine Absicht. Laut einem Blog von Sun Microsystems wird /
entfernt Verzeichnis wird implizit das aktuelle Arbeitsverzeichnis entfernt, eine Verletzung der bereits für .
getroffenen besonderen Überlegungen und ..
Verzeichnisse. Aus diesem Grund hat ihr Normenausschuss diese spezielle Ausnahme zugelassen – nicht um einen Unfall zu verhindern. Diese Änderung wurde erstmals mit Solaris 10 Build 36 eingeführt.
http://archive.is/5lmc9