Was passiert, wenn ich versuche, Ubuntu selbst zu löschen, während ich angemeldet bin?

7

Was würde passieren, wenn ich das /Verzeichnis lösche, während ich als Root bei Ubuntu angemeldet bin ?

Würde ich einen Fehler bekommen, der sich auswirkt Error: unable to self-destruct? Oder könnte ich das Verzeichnis tatsächlich löschen?

Sag mir warum
quelle
askubuntu.com/a/641954/295286 Überprüfen Sie die Kommentare unter meiner Antwort
Sergiy Kolodyazhnyy

Antworten:

9

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: Geben Sie hier die Bildbeschreibung ein

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 .

muru
quelle
2
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)bsod

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.

Sonnenwende
quelle
"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):

$ ldd $( type -p rm)
linux-vdso.so.1 =>  (0x00007ffd4a978000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f905b7be000)
/lib64/ld-linux-x86-64.so.2 (0x00007f905bbcc000)

Beim rmLöschen /lib/x86_64-linux-gnu/libc.so.6oder /lib64/ld-linux-x86-64.so.2es wird wahrscheinlich brechen.

Linux hat seine Philosophie von Unix übernommen: "Leistungsstarke Tools sind leistungsstark, halten Sie die Finger von der Maschinerie fern".

Walzer
quelle
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.

Dollar
quelle
Wenn das Ziel darin besteht, das Laufwerk zu löschen, starten Sie einfach eine liveDisk und führen Sie #shred -f / dev / sdb
j0h