Ich habe hier einige Fragen gesehen, bei denen Leute versehentlich rm -rf --no-preserve-root
oder rm -rf *
aus Versehen den größten Teil oder das gesamte Dateisystem gelöscht haben, bevor sie reagieren können.
Gibt es jemals einen Grund --no-preserve-root
, ob im normalen Gebrauch, als Entwickler oder als Administrator?
/
, aber der »allgemeine Fall« ist immer noch vertreten. Mit anderen Worten: »Es ist nicht die Aufgabe meines Computers, mir zu sagen, was ich tun soll.« Und das sollte es auch nicht sein.Antworten:
WICHTIG: Moderne UEFI-Systeme hängen die Firmware in das
/sys
Verzeichnis ein und stellen sie dem Betriebssystem zur Verfügung. Führen Sie diesen Befehl NICHT auf einem modernen System aus, da dadurch diese Firmware entfernt wird und Ihr Computer beschädigt wird.Das einfachste Szenario, das ich mir vorstellen kann, ist, dass jemand alle Daten von seinem Laufwerk löschen möchte. Es kann durchaus legitime Gründe dafür geben und der einfachste Weg, den ich mir vorstellen kann, ist
Es stellt sich heraus, dass dies tatsächlich ein Beispiel ist in
info rm
:Ein weiterer guter Grund ist, dass Sie ein eingehängtes Dateisystem löschen möchten, in das Sie
chroot
eingetreten sind. In diesem Fallrm -rf --no-preserve-root /
wird das System in derchroot
Umgebung gelöscht, aber Ihr System bleibt intakt.Ich bin mir sicher, dass es weitere mögliche Gründe gibt, aber im Allgemeinen scheint es ein sehr vernünftiger Ansatz zu sein, dass mein System es mir ermöglicht, damit zu machen, was ich will. Es ist meine Aufgabe, vorsichtig zu sein. Das System sollte es mir nur ermöglichen, das zu tun, was ich tun möchte. Wenn das, was ich will, dumm ist, ist das mein Problem und nicht das des Betriebssystems.
Wie auch immer, dies ist eine relativ neue Einschränkung. Sie wurde in der 7. Version der POSIX-Spezifikation hinzugefügt (die vorherige ist hier), bevor dies
rm -rf /
ein vollkommen gültiger Befehl war. Historisch gesehen waren die Verzeichnisse.
und seit 1979 vor dem ersten Löschen von Verzeichnissen..
geschützt . Mehr dazu hier .rm
rm
quelle
/
.rm -rf /
Sie also einen Remote-Computer verwenden , können Sie ihn beispielsweise über den NFS / CIFS / SSHFS-Mount einer anderen Person leeren.Die Existenz des
--no-preserve-root
Schalters ist nicht hinzufügen zusätzliche Funktionalität , sondern zu überschreiben , eine sehr vernünftige Einschränkung der Funktionalität. Dieser Schalter basiert wahrscheinlich auf der Philosophie, dass der Computer das tun sollte, was ihm gesagt wurde, und dass Befehle verfügbar sein sollten, um die gewünschten Aktionen auszuführen. Dieser Wechsel datiert UEFI voraus und ist meiner Erfahrung nach mittlerweile veraltet.In der modernen Praxis
rm
vermeidet der Befehl ohne diese Option das versehentliche Löschen des Stammverzeichnisses, wenn eine nicht initialisierte Variable oder ein Streuraum verwendet wird.Fun Fußnote: Schutz war nicht seine Absicht. Laut einem Sun Microsystems-Blog wird durch das Entfernen des
/
Verzeichnisses implizit das aktuelle Arbeitsverzeichnis entfernt, was eine Verletzung der besonderen Überlegungen darstellt, die bereits für die Verzeichnisse.
und vorgenommen wurden..
. Aus diesem Grund hat das Normungsgremium diese Sonderausnahme zugelassen - nicht zur Verhinderung eines Unfalls. Diese Änderung wurde erstmals mit Solaris 10 Build 36 eingeführt.http://archive.is/5lmc9
quelle
Vielleicht ist dies keine Antwort, die der ursprüngliche Fragesteller haben möchte, aber es gibt einen Anwendungsfall, bei dem alle Dateien rekursiv aus dem Stammverzeichnis gelöscht werden müssen. Obwohl es nicht über den
rm
Befehl erfolgt, ist es Teil des Prozesses switch_root (8) beim Booten Ihres (nicht eingebetteten) Linux-Systems.quelle