GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es ein Szenario, in dem rm -rf -no-preserve-root benötigt wird?

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


Linux
  1. Linux – Warum ist kein Rootfs-Dateisystem auf dem System vorhanden?

  2. Rekursives Mkdir?

  3. Wohin gehen die Dateien, wenn Sie ein Laufwerk in einen Ordner einbinden, der bereits Dateien enthält?

  4. Chown nur wo nötig / Chown beschleunigen?

  5. Wo ist .bashrc?

Es gibt keine aktivierten Repositories für die RHEL-Lösung

Wo finde ich die erste Version des Linux-Betriebssystems?

Wo ist die x86-64 System V ABI dokumentiert?

Wie entferne ich ein Linux-System?

Gibt es einen UNIX-Befehl, um alle kürzlich von einem System entfernten Dateien aufzulisten

Gibt es ein Speicherdateisystem auf Blockebene?