Quanto lontano puoi andare con rm -rf / come root


23

Se sei root e rilasci

rm -rf / 

Quindi fino a che punto può arrivare il comando? Riesci a recuperare i dati da questo tipo di azione? Anche dopo che i binari saranno spariti, i processi in esecuzione sarebbero ancora attivi? Cosa sarebbe necessario per riavviare lo stesso computer fisico? Quali file dovresti ripristinare per farlo accadere?

Potrei provare questo su una VM e vedere, ma voglio sapere la logica dietro cosa aspettarsi se lo faccio.



1
@Ste vero, ma fintanto che non viene copiato / incollato generalmente lo lasciamo andare, dato che abbiamo qualche sovrapposizione con altri siti
Michael Mrozek

Risposte:


21

Questo comando non fa nulla, almeno sul sistema operativo che uso (Solaris) con il quale questa funzione di sicurezza è stata implementata per la prima volta:

# rm -rf /
rm of / is not allowed

Su altri * nix, in particolare la famiglia Linux, se viene fornito un Gnu rm abbastanza recente, è necessario aggiungere l' --no-preserve-rootopzione per consentire il completamento del comando (o almeno l'avvio).

Fino a che punto andrebbe questo comando non è definito. Dipende da molti eventi più o meno imprevedibili. In genere, i processi possono essere eseguiti anche dopo che i loro binari sono stati rimossi.


5
All'inizio non ti ho creduto, ma è così . È difficile credere che ci sia voluto fino al 2005 (Sun / BSD) e 2006 (GNU) per fermare questo terribile errore.
anfetamachina,

3
Puoi ancora usare rm -rf /*per eliminare ANYTHING
Felix Yan

1
In effetti, ma in quel caso non c'è nulla che rm possa (facilmente) fare poiché l'espansione del file è già fatta dalla shell prima che venga chiamata rm.
jlliagre,

4

Anche con l'eccellente risposta di jlliagre, ricorda che questa è ancora una cosa piuttosto pericolosa da fare. Sempre doppio controllo dove siete prima di fare le cose come rm -rf. Sarebbe catastrofico se dovessi farlo rm -rf *nella directory / usr, per esempio.

Per quanto riguarda il resto delle domande, ciò che è possibile ripristinare dipende in gran parte dalle procedure di backup. Nella maggior parte dei sistemi * nix non esiste un modo semplice per recuperare file e directory dopo che sono stati eliminati. A differenza dei vecchi tempi DOS in cui i file erano spesso ancora sul disco dopo l'esecuzione di un'eliminazione, la maggior parte dei sistemi oggigiorno fa cose che rendono molto difficile il recupero. Questo è uno dei motivi per cui i servizi di recupero dati sono così costosi.

Se stai usando una VM, ti consiglio di fare di tanto in tanto delle istantanee. Ma nulla può battere seguendo un buon piano di backup.


2

Come alcune persone hanno detto, è ancora possibile utilizzare sudo rm -rf /*per rimuovere qualsiasi cosa. Senza l'asterisco funziona anche su OS X. Qualcuno ha realizzato un filmato sulla distruzione di OS X Yosemite in questo modo e sono sicuro che il sistema operativo basato su Linux sperimenterà più o meno lo stesso.

Le cose iniziano lentamente a diventare irresponsabili. Non penso che tutto sia stato cancellato, poiché il terminale si è bloccato durante il processo, ma è stato sufficiente per congelare il tutto e fare un riavvio forzato.

Il tentativo di riavvio provoca una modalità per utente singolo come la schermata di avvio con errori.


1
Se questo può dare qualche consolazione, sudo rm -rf /*non eliminerebbe i file e le directory nascosti in /. Inoltre, non eliminerebbe i file mascherati da un altro punto di montaggio, i file su file system di sola lettura o pseudo-file system, file immutabili o punti di montaggio.
Stéphane Chazelas

@ StéphaneChazelas Anche questo è stato mostrato nel filmato. Si sono verificati errori con il filesystem read-ony. Nonostante non abbia eliminato tutto, è stato sufficiente bloccare e distruggere l'avvio (del sistema, non EFI)
TheBro21

2

Ho appena provato con Ubuntu 16 e workstation VMware e con l'opzione no-preserv-root ha cancellato l'intero disco del mio sistema Linux in esecuzione. al termine, l'intera app workstation VMware è diventata insolitamente instabile e persino spegnere o ripristinare la macchina virtuale dall'applicazione era impossibile. L'uccisione di vmx è stata rifiutata solo dopo un riavvio dell'host funzionante!


Bello! :) Questo è quello che speravo di sentire da qualcuno.
Sudipta Chatterjee,

1

Non si può semplicemente distruggere il proprio sistema emettendo rm -rf /come root. Inizialmente, il comando verrà emesso in modalità fail-safe, che limiterà l'utilizzo di rmon /ma anche --no-preserve-rootcome argomento, il sistema in esecuzione non consentirà la rimozione dei processi in esecuzione dal disco; tuttavia, il resto dei programmi e dei file verrà rimosso, lasciando un sistema inutilizzabile con (quasi) nessun programma da eseguire! Controlla gli screenshot tarati qui, il comando è stato emesso in Arch Linux in Virtual Box: http://bit.ly/q9CsA4


Puoi caricare le foto da qualche parte? Il download di un tar, la decompressione e la visualizzazione di tutti i file non è qualcosa che la maggior parte delle persone farà. Gli accorciatori di Oh e URL non sono ammessi su SE, usa sempre il link reale
TheLQ,

3
Hai scritto: "il sistema in esecuzione non consentirà di rimuovere i processi in esecuzione dal disco". Per quanto riguarda * nix, ciò non è corretto. Questa limitazione esiste su Windows ma è possibile rimuovere (scollegare) i file su Unix / Linux anche mentre vengono eseguiti.
jlliagre,

2
"... il sistema in esecuzione non consentirà di rimuovere i processi in esecuzione dal disco ..." Questo, temo, non è vero - i file che non possono essere eliminati nel tuo esempio non sono affatto dei "file" reali - forniscono accesso a dispositivi a blocchi, moduli del kernel e altri sistemi interni. L'esecuzione di un'operazione di eliminazione su di essi non ha senso e non può essere eseguita neanche root.
Nathan Osman,

Ecco le foto di Abhisek condivise nella galleria online: min.us/mSQcqHGQA min.us/moyPvnYOw (su richiesta di TheLQ)
Artem Pelenitsyn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.