Ich habe dies vor einiger Zeit auf einem Live-USB-Stick ausprobiert, um eine Frage zu Quora zu beantworten (es gibt dort eine weitere großartige Antwort von Eric Bowersox).
Erster Versuch auf einem installierten System, bei dem ich sicher war, dass nichts passieren würde:
# cd /
# rm -rf /
rm: it is dangerous to operate recursively on `/'
rm: use --no-preserve-root to override this failsafe
# rm -rf .
rm: cannot remove directory: `.'
#
Also habe ich es auf einem Live-USB versucht (zitiert aus meinem ursprünglichen Beitrag):
Eric Bowersox hat mich dazu inspiriert, es auf einem Live-USB (ohne Ausdauer) auszuprobieren. Wie er sagte, führten eine große Anzahl von Fehlern in Bezug auf aktuell verwendete Dateien sowie eine weitere große Anzahl von Fehlern in Bezug auf das verwendete schreibgeschützte Dateisystem dazu, dass Teile der GUI schrittweise verschwanden: zuerst die Symbole im Unity-Launcher, dann das Symbol für das HUD und dann die Symbole in der Taskleiste. Als alles endete (bemerkenswert schnell), konnte nur das Terminal fokussieren, und das Klicken auf eine andere Stelle funktionierte nicht. Ich könnte alles andere öffnen, nicht einmal die Einstellungen des Terminals. Die Menüs der Lokalisierung und der Uhr-Applets wurden geöffnet, funktionierten jedoch nicht.
Das Wechseln zu den anderen ttys hat einmal funktioniert (ich habe keine Befehle ausprobiert), aber als ich wieder zur GUI gewechselt bin, hat nichts funktioniert.
So sah es damals aus:
Zu diesem Zeitpunkt funktionierte nichts. Mit Ausnahme des Netzschalters und der Magic SysRq-Tasten.
Das Löschen der gemeinsam genutzten Bibliotheken oder rmselbst sollte keine Probleme verursachen, da beide beim rmStart in den Speicher geladen worden wären .
Es stellt sich heraus, dass gemeinsam genutzte Bibliotheken möglicherweise nur bei Bedarf geladen werden (FWIW, um Ihr letztes Snippet ausführlicher zu erweitern, da Sie die Frage im Grunde bereits beantwortet haben)
kos
5
Also habe ich es in einer laufenden Ubuntu 14.10 VM in Virtualbox gemacht . Ich habe mich nicht darum gekümmert, es selbst zu installieren, sondern es direkt von osboxes.org heruntergeladen
Das Ausführen sudo rm -rf --no-preserve-root /in einem Terminal hat Folgendes verursacht:
Einige Knöpfe verschwanden im Launcher
Dann war der Launcher weg
Und schließlich verschwand der gesamte Desktop mit laufendem Terminal
Links mit einem total blauen Bildschirm (sic)
Das war nur der sichtbare Teil. Ich habe es nicht lange laufen lassen und die Maschine heruntergefahren.
rmWar also nicht ganz erfolgreich, da noch einige Dateien herumlagen: / bin, / run, ein Teil von / lib und / var
Aber kein / boot und kein Kernel mehr übrig, so dass es nicht mehr bootfähig war, obwohl die Module noch da waren.
Bearbeiten : Die Ausführung über eine Konsole (Strg-Alt-F1 oder Rechts-Strg F1 in der Vbox) ist viel erfolgreicher, wenn auch weniger spektakulär.
Es spuckt Fehler über die / sys-Datei aus, die nicht gelöscht werden kann, genau wie in / proc. Aber es ist nichts mehr übrig, nachdem es abgeschlossen ist. Nur einige Geräte unter / dev und einige Dateien in / run.
"Aber es ist nichts mehr übrig, nachdem es fertig ist." ... Wie haben Sie das herausgefunden? Hatten Sie eine statisch verknüpfte Busybox-Shell?
Muru
Ich habe gerade die virtuelle Festplatte in einer anderen VM gemountet, um sie auszuchecken.
SolsTiCe
/procund /syssind virtuelle Dateisysteme, die vom Kernel gefüllt werden. Die darin enthaltenen Dateien sind nicht auf der Festplatte vorhanden.
Muru
1
TUN SIE DAS NIEMALS, aber wenn Sie sudo rm -rf /den rmBefehl ausführen, der als ausgeführt wird root, würde er gerne mit dem Löschen beginnen. Wenn es eine Datei finden würde, würde es sie löschen. Wenn rmein Verzeichnis gefunden wird, wird es in das Verzeichnis eingegeben, alle Dateien gelöscht und dann das Verzeichnis gelöscht. Möglicherweise rmgehen die zu löschenden Dateien aus oder es werden die rmerforderlichen Dateien gelöscht (z. B. eine dynamische Bibliothek):
In Wirklichkeit wäre es also nicht möglich, das /Verzeichnis vollständig zu entfernen ?
TellMeWhy
1
Nicht auf diese Art. Mit dieser Technik können Sie ein System auf den nicht funktionierenden Zustand reduzieren.
Waltinator
Sobald der Befehl die benötigte DLL geladen hat, muss er danach nicht mehr auf die Festplatte zugreifen, da er sich im RAM befindet und der Befehl auch dann ausgeführt werden kann, wenn die Bibliothek nicht mehr vorhanden ist. Ich denke das ist falsch. Es wird nicht aufhören, bis alles weg ist. Jeder andere Befehl, den Sie ausführen möchten, findet die libc jedoch nicht und schlägt fehl. Dies funktioniert auch nicht "wie es ist", da Sie einen Schalter hinzufügen müssen, um diesen Befehl wirklich auszuführen.
SolsTiCe
@solsTiCe Freigegebene Bibliotheken AFAIK wird möglicherweise nur geladen, wenn es effektiv benötigt wird, aber ich kann mich darin irren, da ich es nur einmal irgendwo gelesen habe. Howerver @ waltinator solsTiCe Es ist sicherlich richtig, dass sudo rm -rf /es standardmäßig deaktiviert ist. Sie müssen auch den --no-preserve-rootSchalter hinzufügen , damit er tatsächlich ausgeführt wird.
Kos
1
@kos Ich selbst habe nichts dagegen. Besser eine nicht funktionierende rm als eine funktionierende rm;)
Rinzwind
0
Wenn Sie den Ordner / und alle Unterordner entfernen möchten, können Sie von einem Live PenDrive booten und mit Gparted die Partition entfernen, auf der / sich befindet, und sie neu erstellen, wenn Sie dies wünschen. Wenn Sie alle anderen Ordner unter root auf separaten Partitionen haben möchten, können Sie dies auch mit den anderen Partitionen tun. Sie können es einfach nicht absichtlich über die Befehlszeile tun, wenn Sie von dort aus gebootet haben.
Antworten:
Ich habe dies vor einiger Zeit auf einem Live-USB-Stick ausprobiert, um eine Frage zu Quora zu beantworten (es gibt dort eine weitere großartige Antwort von Eric Bowersox).
Erster Versuch auf einem installierten System, bei dem ich sicher war, dass nichts passieren würde:
Also habe ich es auf einem Live-USB versucht (zitiert aus meinem ursprünglichen Beitrag):
Das Löschen der gemeinsam genutzten Bibliotheken oder
rm
selbst sollte keine Probleme verursachen, da beide beimrm
Start in den Speicher geladen worden wären .quelle
Also habe ich es in einer laufenden Ubuntu 14.10 VM in Virtualbox gemacht . Ich habe mich nicht darum gekümmert, es selbst zu installieren, sondern es direkt von osboxes.org heruntergeladen
Das Ausführen
sudo rm -rf --no-preserve-root /
in einem Terminal hat Folgendes verursacht:Das war nur der sichtbare Teil. Ich habe es nicht lange laufen lassen und die Maschine heruntergefahren.
rm
War also nicht ganz erfolgreich, da noch einige Dateien herumlagen: / bin, / run, ein Teil von / lib und / varAber kein / boot und kein Kernel mehr übrig, so dass es nicht mehr bootfähig war, obwohl die Module noch da waren.
Bearbeiten : Die Ausführung über eine Konsole (Strg-Alt-F1 oder Rechts-Strg F1 in der Vbox) ist viel erfolgreicher, wenn auch weniger spektakulär.
Es spuckt Fehler über die / sys-Datei aus, die nicht gelöscht werden kann, genau wie in / proc. Aber es ist nichts mehr übrig, nachdem es abgeschlossen ist. Nur einige Geräte unter / dev und einige Dateien in / run.
quelle
/proc
und/sys
sind virtuelle Dateisysteme, die vom Kernel gefüllt werden. Die darin enthaltenen Dateien sind nicht auf der Festplatte vorhanden.TUN SIE DAS NIEMALS, aber wenn Sie
sudo rm -rf /
denrm
Befehl ausführen, der als ausgeführt wirdroot
, würde er gerne mit dem Löschen beginnen. Wenn es eine Datei finden würde, würde es sie löschen. Wennrm
ein Verzeichnis gefunden wird, wird es in das Verzeichnis eingegeben, alle Dateien gelöscht und dann das Verzeichnis gelöscht. Möglicherweiserm
gehen die zu löschenden Dateien aus oder es werden dierm
erforderlichen Dateien gelöscht (z. B. eine dynamische Bibliothek):Beim
rm
Löschen/lib/x86_64-linux-gnu/libc.so.6
oder/lib64/ld-linux-x86-64.so.2
es wird wahrscheinlich brechen.Linux hat seine Philosophie von Unix übernommen: "Leistungsstarke Tools sind leistungsstark, halten Sie die Finger von der Maschinerie fern".
quelle
/
Verzeichnis vollständig zu entfernen ?sudo rm -rf /
es standardmäßig deaktiviert ist. Sie müssen auch den--no-preserve-root
Schalter hinzufügen , damit er tatsächlich ausgeführt wird.Wenn Sie den Ordner / und alle Unterordner entfernen möchten, können Sie von einem Live PenDrive booten und mit Gparted die Partition entfernen, auf der / sich befindet, und sie neu erstellen, wenn Sie dies wünschen. Wenn Sie alle anderen Ordner unter root auf separaten Partitionen haben möchten, können Sie dies auch mit den anderen Partitionen tun. Sie können es einfach nicht absichtlich über die Befehlszeile tun, wenn Sie von dort aus gebootet haben.
quelle