GNU/Linux >> Linux Esercitazione >  >> Linux

Come ripristinare o recuperare i comandi eliminati in Linux

In questo breve tutorial impareremo come ripristinare o recuperare i comandi eliminati in Linux usando coreutils e busybox .

Di solito utilizziamo rm comando per rimuovere roba in Linux, giusto? Sì. E se usiamo rm a rm rm ? In altre parole, cosa succede se rimuoviamo /bin/rm file utilizzando rm comando? Mi sono sempre chiesto cosa sarebbe successo se lo avessi effettivamente fatto su una macchina Linux. Quindi ho avviato rapidamente una VM Ubuntu ed ho eliminato il /bin/rm file eseguendo il comando seguente:

$ sudo rm /bin/rm

Ho pensato di poter recuperare facilmente il rm cancellato comando reinstallando Gnu coreutils pacchetto, perché rm il comando fa parte di coreutils pacchetto, non è vero?

Quindi ho provato a reinstallare coreutils pacchetto utilizzando apt gestore di pacchetti come di seguito:

$ sudo apt install --reinstall coreutils

Oddio, mi sbagliavo! Il apt il gestore dei pacchetti richiede rm , quindi non può reinstallare coreutils pacchetto.

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)

Ho anche provato a compilarlo dal sorgente, ma non funziona nemmeno, perché il Makefile usa rm . Finora non sapevo che la reinstallazione non fosse possibile senza rm comando.

Pensavo che ripristinare i comandi eliminati fosse banale. Tuttavia, in questo caso particolare non sono riuscito a ripristinare il rm comando. Alla fine ho trovato la soluzione dopo un paio di ricerche sul web. Se hai rimosso accidentalmente rm comando (spero che non lo farai), potresti utilizzare uno dei seguenti metodi per recuperarlo. Non solo rm comando, puoi usare questa procedura per recuperare quasi tutti i comandi di base eliminati forniti da coreutils pacchetto.

Disclaimer:

NON DEVI FARLO SU UN SISTEMA DI PRODUZIONE . È esclusivamente a scopo educativo!.

Recupera i comandi eliminati in Linux usando coreutils

Per chi non lo sapesse, Gnu coreutils il pacchetto fornisce comandi di base essenziali come cat , ls , rm , mkdir , rmdir , touch , e tanti altri. Viene preinstallato con la maggior parte delle distribuzioni GNU/Linux.

Per recuperare il rm cancellato comando, prima crea un file binario vuoto con nome "rm" sotto /bin/ posizione:

$ sudo touch /bin/rm

Rendilo eseguibile:

$ sudo chmod +x /bin/rm

Scarica coreutils pacchetto utilizzando il comando:

$ apt download coreutils

Tieni presente che non possiamo reinstallare coreutils ma scaricalo. Inoltre, non è necessario utilizzare sudo privilegi per scaricare un pacchetto.

Decomprimi il pacchetto scaricato con il seguente dpkg comando:

$ sudo dpkg --unpack coreutils_8.30-3ubuntu2_amd64.deb

Il comando sopra semplicemente decomprime coreutils pacchetto, ma non lo configurerà.

Fatto! Ora puoi iniziare a usare rm comando. Per verificare se la funzionalità del rm comando viene ripristinato, elimina semplicemente qualsiasi file indesiderato. Ad esempio, ho eliminato coreutils pacchetto che ho scaricato in precedenza:

$ rm coreutils_8.30-3ubuntu2_amd64.deb 

Grande! Funziona!

E, per favore, non farlo mai su un sistema di produzione!!

Ripristina i comandi eliminati utilizzando busybox in Linux

Casella occupata è una suite di software che fornisce molte utilità UNIX comuni in un unico piccolo eseguibile. Fornisce sostituzioni per la maggior parte delle utilità che di solito trovi in ​​GNU fileutils, shellutils, ecc. È disponibile per impostazione predefinita in Debian e nei suoi derivati ​​come Ubuntu e molte altre distribuzioni Linux.

Puoi visualizzare l'elenco delle principali utilità della riga di comando fornite da busybox usando il comando:

$ busybox --list

Risultato di esempio:

[
[[
acpid
adjtimex
ar
arch
arp
arping
ash
awk
basename
bc
blkdiscard
blockdev
brctl
bunzip2
busybox
bzcat
bzip2
cal
cat
[..]

Nel mio desktop Ubuntu 20.04 LTS, busybox fornisce circa 263 utilità della riga di comando.

Ora ripristiniamo il rm cancellato comando creando temporaneamente un collegamento simbolico ad esso. Esegui il comando seguente per creare un collegamento simbolico temporaneo a /bin/rm a /bin/busybox :

$ ln -s busybox /bin/rm

Quindi reinstalla coreutils pacchetto utilizzando il comando:

$ sudo apt install --reinstall coreutils

Questo è tutto. Il comando precedente ripristinerà rm comando.

Come affermato in precedenza, questa procedura non serve solo per recuperare rm comando. Immagino che possiamo recuperare quasi tutti i comandi Linux usando questi metodi. Controllalo tu stesso su una VM e vedi che funziona! Ancora una volta, non farlo in un sistema di produzione . Sei stato avvisato!

Leggi anche:

  • Ripristina l'autorizzazione eseguibile per il comando Chmod in Linux
  • Moreutils:una raccolta di utilità Unix più utili

Linux
  1. Come recuperare un file cancellato in Linux

  2. Come disabilitare i comandi di spegnimento e riavvio in Linux

  3. Come ripristinare la directory /tmp eliminata in Linux

  4. Come recuperare file cancellati su Linux utilizzando lo strumento di recupero dati Scalpel?

  5. Come limitare i comandi utente in Linux

Come utilizzare i comandi Pbcopy e Pbpaste su Linux

Come recuperare i dati cancellati su un sistema Linux

Come usare i comandi FTP di Linux

Come installare TestDisk su Linux e recuperare i file eliminati

Come usare PhotoRec per recuperare file cancellati in Linux/Ubuntu

Come usare Linux per recuperare file cancellati