Ricerca nel sito web

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.

  1. Se si accede a un file con l'attributo "A" impostato, il relativo record atime non viene aggiornato.
  2. Se un file viene modificato con l'attributo "S" impostato, le modifiche vengono aggiornate in modo sincrono sul disco.
  3. Un file è impostato con l'attributo "a", può essere aperto solo in modalità di aggiunta per la scrittura.
  4. 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.
  5. Viene impostato un file con l'attributo "j", tutte le sue informazioni aggiornate nel journal ext3 prima di essere aggiornate nel file stesso.
  6. Un file è impostato con l'attributo "t", senza unione delle code.
  7. Un file con l'attributo "d" non sarà più candidato al backup quando viene eseguito il processo di dump.
  8. Quando un file con l'attributo "u" viene eliminato, i suoi dati vengono salvati. Ciò consente all'utente di richiederne l'annullamento.
Operatore
  1. +: aggiunge l'attributo all'attributo esistente dei file.
  2. : rimuove l'attributo dall'attributo esistente dei file.
  3. =: 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.