In diesem kurzen Tutorial erfahren wir, wie Sie gelöschte Befehle in Linux mit coreutils
wiederherstellen oder wiederherstellen und busybox
.
Wir verwenden normalerweise rm
Befehl zum Entfernen von Inhalten in Linux, richtig? Ja. Was ist, wenn wir rm
verwenden? zu rm
rm
? Mit anderen Worten, was ist, wenn wir /bin/rm
entfernen Datei mit rm
Befehl? Ich habe mich immer gefragt, was passieren würde, wenn ich das tatsächlich auf einer Linux-Maschine mache. Also habe ich schnell eine Ubuntu-VM hochgefahren und den /bin/rm
gelöscht Datei, indem Sie den folgenden Befehl ausführen:
$ sudo rm /bin/rm
Ich dachte, ich könnte den gelöschten rm
leicht wiederherstellen Befehl, indem Sie Gnu coreutils
neu installieren Paket, weil rm
Der Befehl ist Teil von coreutils
Paket, nicht wahr?
Also habe ich versucht, coreutils
neu zu installieren Paket mit apt
Paketmanager wie unten:
$ sudo apt install --reinstall coreutils
Oh Mann, ich habe mich geirrt! Die apt
Paketmanager benötigt rm
, daher kann es die coreutils
nicht neu installieren Paket.
Reading package lists... Done Building dependency tree Reading state information... Done 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded. Need to get 1249 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 http://in.archive.ubuntu.com/ubuntu focal/main amd64 coreutils amd64 8.30-3ubuntu2 [1249 kB] Fetched 1249 kB in 2s (747 kB/s) dpkg: warning: 'rm' not found in PATH or not executable dpkg: error: 1 expected program not found in PATH or not executable Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin E: Sub-process /usr/bin/dpkg returned an error code (2)
Ich habe auch versucht, es aus dem Quellcode zu kompilieren, aber es funktioniert auch nicht, weil das Makefile
verwendet rm
. Mir war bisher nicht bekannt, dass die Neuinstallation ohne rm
nicht möglich ist Befehl.
Ich dachte, das Wiederherstellen gelöschter Befehle ist trivial. In diesem speziellen Fall konnte ich jedoch den rm
nicht wiederherstellen Befehl. Schließlich fand ich die Lösung nach ein paar Websuchen. Falls Sie jemals versehentlich rm
entfernt haben Befehl (ich hoffe, Sie werden es nicht tun), können Sie eine der folgenden Methoden verwenden, um es wiederherzustellen. Nicht nur rm
Befehl, könnten Sie dieses Verfahren verwenden, um fast alle gelöschten Kernbefehle wiederherzustellen, die von den coreutils
bereitgestellt werden Paket.
Haftungsausschluss:
Sie DÜRFEN DIES NICHT AUF EINEM PRODUKTIONSSYSTEM MACHEN . Es dient ausschließlich Bildungszwecken!.
Gelöschte Befehle in Linux mit Coreutils wiederherstellen
Für diejenigen, die es nicht wissen, die Gnu coreutils
Paket stellt grundlegende Kernbefehle wie cat
bereit , ls
, rm
, mkdir
, rmdir
, touch
, und viele mehr. Es ist bei den meisten GNU/Linux-Distributionen vorinstalliert.
Um den gelöschten rm
wiederherzustellen erstellen Sie zunächst eine leere Binärdatei mit dem Namen "rm"
unter /bin/
Standort:
$ sudo touch /bin/rm
Ausführbar machen:
$ sudo chmod +x /bin/rm
Laden Sie die coreutils
herunter Paket mit dem Befehl:
$ apt download coreutils
Bitte beachten Sie, dass wir coreutils
nicht neu installieren können aber lade es herunter. Außerdem müssen wir sudo
nicht verwenden Privilegien zum Herunterladen eines Pakets.
Entpacken Sie das heruntergeladene Paket mit dem folgenden dpkg
Befehl:
$ sudo dpkg --unpack coreutils_8.30-3ubuntu2_amd64.deb
Der obige Befehl entpackt einfach die coreutils
Paket, wird es aber nicht konfigurieren.
Erledigt! Jetzt können Sie mit der Verwendung von rm
beginnen Befehl. Um zu überprüfen, ob die Funktionalität des rm
Befehl wiederhergestellt wird, löschen Sie einfach alle unerwünschten Dateien. Zum Beispiel habe ich coreutils
gelöscht Paket, das ich zuvor heruntergeladen habe:
$ rm coreutils_8.30-3ubuntu2_amd64.deb
Toll! Es funktioniert!
Und bitte tun Sie dies niemals auf einem Produktionssystem!
Stellen Sie gelöschte Befehle mit busybox in Linux wieder her
BusyBox ist eine Software-Suite, die viele gängige UNIX-Dienstprogramme in einer einzigen kleinen ausführbaren Datei bereitstellt. Es bietet Ersatz für die meisten Dienstprogramme, die Sie normalerweise in GNU Fileutils, Shellutils usw. finden. Es ist standardmäßig in Debian und seinen Derivaten wie Ubuntu und vielen anderen Linux-Distributionen verfügbar.
Sie können die Liste der wichtigsten Befehlszeilenprogramme anzeigen, die von busybox
bereitgestellt werden mit Befehl:
$ busybox --list
Beispielausgabe:
[ [[ acpid adjtimex ar arch arp arping ash awk basename bc blkdiscard blockdev brctl bunzip2 busybox bzcat bzip2 cal cat [..]
In meinem Ubuntu 20.04 LTS-Desktop bietet busybox ungefähr 263 Befehlszeilenprogramme.
Lassen Sie uns nun den gelöschten rm
wiederherstellen Befehl, indem Sie vorübergehend einen symlink erstellen dazu. Führen Sie den folgenden Befehl aus, um /bin/rm
vorübergehend symbolisch zu verknüpfen nach /bin/busybox
:
$ ln -s busybox /bin/rm
Installieren Sie dann coreutils
neu Paket mit dem Befehl:
$ sudo apt install --reinstall coreutils
Das ist es. Der obige Befehl stellt den rm
wieder her Befehl.
Wie bereits erwähnt, dient dieses Verfahren nicht nur der Wiederherstellung von rm
Befehl. Ich denke, wir können mit diesen Methoden fast alle Linux-Befehle wiederherstellen. Überprüfen Sie es selbst auf einer VM und sehen Sie, dass es funktioniert! Nochmals, tun Sie dies nicht in einem Produktionssystem . Sie wurden gewarnt!
Lesen Sie auch:
- Wiederherstellen der ausführbaren Berechtigung für den Chmod-Befehl in Linux
- Moreutils – Eine Sammlung nützlicherer Unix-Utilities