5 comandi 'chattr' per rendere i file importanti IMMUTABLE (immutabili) in Linux
chattr (Cambia attributo) è un'utilità Linux da riga di comando utilizzata per impostare/annullare determinati attributi in un file nel sistema Linux per proteggere la cancellazione o la modifica accidentale di file e cartelle importanti, anche se sei loggato come utente root.
Nei file system nativi Linux, ad esempio ext2, ext3, ext4, btrfs, ecc., supporta tutti i flag, sebbene tutti i flag non supportino tutti i FS non nativi. Non è possibile eliminare o modificare file/cartelle una volta impostati gli attributi con il comando chattr, anche se si dispone delle autorizzazioni complete su di essi.
Questo è molto utile per impostare attributi nei file di sistema come passwd e file shadow in cui sono contenute le informazioni dell'utente.
Sintassi di chattr
chattr [operator] [flags] [filename]
Attributi e flag
Di seguito è riportato l'elenco degli attributi comuni e dei flag associati che possono essere impostati/disimpostati utilizzando il comando chattr.
- Se si accede a un file con l'attributo "A" impostato, il relativo record atime non viene aggiornato.
- Se un file viene modificato con l'attributo "S" impostato, le modifiche vengono aggiornate in modo sincrono sul disco.
- Un file è impostato con l'attributo "a", può essere aperto solo in modalità di aggiunta per la scrittura.
- Un file è impostato con l'attributo "i", non può essere modificato (immutabile). Significa nessuna ridenominazione, nessuna creazione di collegamenti simbolici, nessuna esecuzione, nessuna scrittura, solo il superutente può annullare l'impostazione dell'attributo.
- Viene impostato un file con l'attributo "j", tutte le sue informazioni aggiornate nel journal ext3 prima di essere aggiornate nel file stesso.
- Un file è impostato con l'attributo "t", senza unione delle code.
- Un file con l'attributo "d" non sarà più candidato al backup quando viene eseguito il processo di dump.
- Quando un file con l'attributo "u" viene eliminato, i suoi dati vengono salvati. Ciò consente all'utente di richiederne l'annullamento.
Operatore
- +: aggiunge l'attributo all'attributo esistente dei file.
- –: rimuove l'attributo dall'attributo esistente dei file.
- =: mantiene gli attributi esistenti dei file.
Qui dimostreremo alcuni esempi di comandi chattr per impostare/annullare gli attributi di un file e di cartelle.
1. Come aggiungere attributi ai file per proteggerli dall'eliminazione
A scopo dimostrativo, abbiamo utilizzato rispettivamente la cartella demo e il file important_file.conf. Prima di impostare gli attributi, assicurati di verificare che i file esistenti dispongano di attributi impostati utilizzando il comando "ls -l". Hai visto i risultati? Al momento non è impostato alcun attributo.
[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf
Per impostare l'attributo, utilizziamo il segno + e per annullarlo utilizziamo il segno – con il comando chattr. Quindi, impostiamo un bit immutabile sui file con i flag +i per impedire a chiunque di eliminare un file, anche un utente root non ha il permesso di eliminarlo.
[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf
Nota: il bit immutabile +i può essere impostato solo dall'utente superuser (ovvero root) o un utente con privilegi sudo può essere in grado di impostare .
Dopo aver impostato il bit immutabile, verifichiamo l'attributo con il comando "lsattr".
[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf
Ora, ho provato a eliminare forzatamente, rinominare o modificare le autorizzazioni, ma non è consentito, dice "Operazione non consentita".
[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted
2. Come annullare l'impostazione dell'attributo sui file
Nell'esempio sopra, abbiamo visto come impostare l'attributo per proteggere e impedire la cancellazione accidentale dei file, qui in questo esempio, vedremo come reimpostare (annullare l'attributo) le autorizzazioni e consentire di rendere un file modificabile o alterabile utilizzando -iflag.
[root@tecmint tecmint]# chattr -i demo/ important_file.conf
Dopo aver reimpostato le autorizzazioni, verifica lo stato immutabile dei file utilizzando il comando "lsattr".
[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf
Nei risultati sopra vedi che il flag "-i" è stato rimosso, ciò significa che puoi rimuovere in sicurezza tutti i file e le cartelle che risiedono nella cartella tecmint.
[root@tecmint tecmint]# rm -rf *
[root@tecmint tecmint]# ls -l
total 0
3. Come proteggere i file /etc/passwd e /etc/shadow
L'impostazione di attributi immutabili sui file /etc/passwd o /etc/shadow li rende sicuri da una rimozione accidentale o da una manomissione e inoltre disabiliterà la creazione dell'account utente.
[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow
Ora prova a creare un nuovo utente di sistema, riceverai un messaggio di errore che dice 'impossibile aprire /etc/passwd'.
[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd
In questo modo puoi impostare autorizzazioni immutabili sui tuoi file importanti o sui file di configurazione del sistema per impedirne l'eliminazione.
4. Aggiungi dati senza modificare i dati esistenti su un file
Supponiamo che tu voglia consentire a tutti di aggiungere semplicemente dati a un file senza cambiare o modificare i dati già immessi, puoi utilizzare l'attributo "a" come segue.
[root@tecmint tecmint]# chattr +a example.txt
[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt
Dopo aver impostato la modalità di aggiunta, il file può essere aperto per scrivere dati solo in modalità di aggiunta. È possibile deimpostare l'attributo di aggiunta come segue.
[root@tecmint tecmint]# chattr -a example.txt
Ora prova a sostituire il contenuto già esistente in un file example.txt, riceverai un errore che dice "Operazione non consentita".
[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted
Ora prova ad aggiungere nuovi contenuti a un file esistente example.txt e verificalo.
[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.
5. Come proteggere le directory
Per proteggere l'intera directory e i suoi file, utilizziamo lo switch "-R" (ricorsivamente) con il flag "+i" insieme al percorso completo della cartella.
[root@tecmint tecmint]# chattr -R +i myfolder
Dopo aver impostato l'attributo ricorsivamente, prova a eliminare la cartella e i suoi file.
[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted
Per annullare l'impostazione dell'autorizzazione, utilizziamo lo stesso interruttore "-R" (ricorsivamente) con il flag "-i" insieme al percorso completo della cartella.
[root@tecmint tecmint]# chattr -R -i myfolder
Questo è tutto! Per saperne di più sugli attributi, i flag e le opzioni del comando chattr utilizzare le pagine man.