Ci sono cartelle che non vorreste mai fossero toccate, neppure accidentalmente da voi stessi. Per quello che mi riguarda è difficilissimo che un file da me eliminato passi per il cestino, specie su Linux: facendo largo uso di terminale, spesso e volentieri con accesso root, tendo ad eliminare files e cartelle con il comando rm. E non immaginate quante volte ho confuso una finestra di terminale con un’altra, confondendo anche i files da eliminare, con le ovvie imprecazioni del caso…
Oggi vi suggerisco un trucco che permette di proteggere su linux, a priori, determinati files dall’eliminazione, dalla modifica e dallo spostamento. In pratica vi faccio vedere come rendere il file (o la cartella) immutabile.
Il comando, che richiede i permessi di root per essere utilizzato, si chiama chattr (change attribute, man chattr per maggiori informazioni) e, come da nome, permette di modificare una moltitudine di attributi relativi a files e directories. L’attributo che a noi interessa è quello relativo all’immutabilità del file o della cartella in questione. E adesso a noi.NB: se non siete su distribuzione debian-based (e non disponete, quindi, del comando sudo) potrete ottenere i permessi di root utilizzando il comando su prima del comando chattr. La sintassi è la seguente:
sudo chattr +i percorso_del_file
renderà immutabile il file passato come argomento, mentre
sudo chattr -i percorso_del_file
Per rendere immutabile una directory, invece, avremo bisogno di un chattr ricorsivo (che agisca prima su tutti i files presenti nella directory e poi sulla directory stessa). Non preoccupatevi, il processo può essere fornito direttamente dal sistema anteponendo un -R prima dell’attributo da modificare. In sostanza per rendere immutabile una directory (e tutti i files al suo interno) scriveremo:
sudo chattr -R +i percorso_della_directory
e, analogamente, per rilasciarla scriveremo
chattr -R +i percorso_della_directory
Un esempio pratico: se volessi bloccare il file foo presente nella mia home directory dovrei scrivere
sudo chattr +i ~/foo
e per rilasciarlo scriverei
sudo chattr -i ~/foo
Stesso discorso vale per le directory: se volessi bloccare la directory testdir presente all’interno della mia home directory scriverei
sudo chattr -R +i ~/testdir/
e, alla stessa maniera, se volessi rilasciarla scriverei
sudo chattr -R -i ~/testdir/
Vi raccomando solo di evitare di invocare il comando chattr su files e directories di sistema: i risultati potrebbero essere quasi devastanti!