Il comando da shell rm
disponibile tramite i sistemi Unix-like permette la rimozione diretta di una determinata directory o di un file presente in essa. Più precisamente, rm
rimuove uno o più collegamenti fisici, quindi non è detto che ciò comporti anche la rimozione immediata dei dati e la conseguente liberazione dello spazio sulla memoria. Ciò non avviene ad esempio se vi sono altri collegamenti agli stessi dati, o se il file o la directory sono al momento in uso da qualche processo. Dunque per eseguire una cancellazione in modo persistente sarebbe più appropriato usare l'opzione -rf
, in modo che i dati vengano cancellati in modo ricorsivo e forzato.
rm -rf
è dunque un comando molto simile a DROP SQL
, che in ambito MySQL permette di cancellare completamente una tabella. Nei sistemi Unix-like la possibilità di rimuovere un file dipende però dal tipo di privilegi a cui ha accesso l'utente, senza contare che nei sistemi moderni sono state inserite delle contromisure per evitare che l'utente possa danneggiare in modo irreparabile il sistema, cancellando per errore file essenziali al suo funzionamento.
In passato però non esisteva nessun tipo di avvertimento a riguardo e l'utente con privilogi elevati poteva anche distruggere l'intero sistema cancellato, per esempio, la root directory. Sono diverse le storie che è possibile leggere in rete riguardo ad errori o sviste nell'indicare la giusta directory da cancellare.
Sopratutto nei sistemi privi di server grafico, e con dischi fissi molto meno capienti rispetto ad oggi, era normale eseguire una pulizia dei dati non più utili, ma bastava un semplice errore nel definire la directory corretta e si finiva a reinstallare l'intero sistema.
Oggi di base se proviamo a digitare da shell:
rm -rf /
avremo un output che ci avvertirà su quanto sia pericoloso usare un il comando di eliminazione ricorsiva all'interno della directory root:
:~$ rm -rf /
.rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
Se si vuole eliminare la root directory bisogna digitale l'opzione --no-preserve-root
altrimenti il sistema bloccherà l'istruzione, questo perché la struttura ad albero del file system Unix/Linux dipende interamente dalla directory "/
" ovvero root (la radice). Questa opzione è stata implementata appunto per evitare che l'utente cancelli per sbaglio tutti i file di base della distribuzione.
La root contiene i file di configurazione per l'account di root, proprio come la directory home
di un utente ordinario (che per impostazione predefinita è una sottodirectory della directory /home
) e contiene la configurazione e altri file per quell'utente.
Via Fossmint