51 05/04/2026 07/04/2026 7 min

Cos’è chattr e perché usarlo

chattr è un comando dei sistemi Linux che modifica gli attributi estesi di file e directory su filesystem compatibili, come ext2, ext3, ext4 e in parte altri supportati dal kernel. Non cambia i permessi classici di chmod o la proprietà di chown: agisce a un livello diverso, più basso, e proprio per questo può offrire una protezione molto utile contro modifiche accidentali o malevole.

Il caso d’uso più noto è l’attributo immutabile, che impedisce modifiche, rinomina e cancellazione del file finché l’attributo non viene rimosso. In ambito sysadmin è utile per proteggere file di configurazione critici, script di avvio, file di sito sensibili o elementi che non devono essere alterati nemmeno da utenti con permessi tradizionali elevati, purché non abbiano la possibilità di rimuovere l’attributo stesso.

Va però chiarito un punto fondamentale: chattr non è una barriera assoluta. Chi ha privilegi root può rimuovere gli attributi. Quindi è uno strumento di hardening e di controllo operativo, non un sostituto di backup, separazione dei privilegi, monitoraggio e sicurezza del sistema.

Verifiche preliminari

Prima di usare chattr, conviene verificare tre cose:

  1. Il filesystem supporta gli attributi estesi: in genere ext2/ext3/ext4 sono i casi più comuni.
  2. Il file da proteggere non deve essere modificato automaticamente da servizi, aggiornamenti o applicazioni.
  3. Hai un piano per rimuovere l’attributo quando servirà intervenire sul file.

Per controllare il filesystem del percorso interessato, puoi usare:

df -T /percorso/del/file

Se il tipo filesystem è compatibile, puoi procedere. Se il file sta su un filesystem non supportato, il comando potrebbe non avere effetto o restituire errore.

Come funziona l’attributo immutabile

L’attributo più importante è i, che significa immutable. Quando un file ha questo attributo:

  • non può essere modificato;
  • non può essere cancellato;
  • non può essere rinominato;
  • non può essere sovrascritto.

Per una directory, l’effetto si estende ai file contenuti: non puoi aggiungere, rimuovere o rinominare elementi al suo interno finché l’attributo resta attivo.

Questo lo rende molto utile per proteggere file come:

  • /etc/ssh/sshd_config dopo averlo stabilizzato;
  • script personalizzati in /usr/local/bin;
  • configurazioni critiche di siti o servizi;
  • file di testo usati come riferimento e non destinati a cambiare.

Ma è anche il motivo per cui bisogna usarlo con cautela: se lo applichi a un file che un servizio deve aggiornare, potresti causare errori, blocchi o malfunzionamenti.

Comandi base di chattr

Per impostare l’attributo immutabile su un file:

sudo chattr +i file.txt

Per rimuoverlo:

sudo chattr -i file.txt

Per verificare gli attributi attivi, usa:

lsattr file.txt

Un output con la lettera i indica che il file è immutabile. Esempio atteso:

----i--------e------- file.txt

Il formato preciso può variare in base al filesystem e alla versione, ma la presenza di i è il segnale da cercare.

Esempio pratico su un file di configurazione

Immaginiamo di voler proteggere un file di configurazione che, una volta corretto, non deve essere modificato per errore. La sequenza più sicura è questa:

  1. Fai un backup del file prima di toccarlo.
  2. Verifica che la configurazione sia corretta e che il servizio funzioni.
  3. Imposta l’attributo immutabile solo dopo il controllo finale.

Per esempio:

sudo cp /etc/esempio.conf /etc/esempio.conf.bak
sudo chattr +i /etc/esempio.conf
lsattr /etc/esempio.conf

Se il file è protetto correttamente, la verifica con lsattr deve mostrare la presenza di i. A quel punto, qualsiasi tentativo di modifica o cancellazione fallirà finché non rimuovi l’attributo.

Se in futuro devi aggiornare il file, la procedura corretta è:

sudo chattr -i /etc/esempio.conf
# modifica il file
sudo chattr +i /etc/esempio.conf

Questo approccio riduce il rischio di lasciare il file sbloccato più del necessario.

Proteggere una directory intera

Puoi applicare chattr anche a una directory. Ad esempio:

sudo chattr +i /var/www/html/progetto

Con l’attributo immutabile sulla directory, non potrai creare, eliminare o rinominare file all’interno finché non lo rimuovi. È una protezione forte, ma proprio per questo può interferire con deploy, aggiornamenti, cache dinamiche o caricamenti gestiti dal CMS.

In ambienti WordPress, ad esempio, applicarlo a tutta la root del sito è spesso una cattiva idea se il sito deve aggiornarsi da solo o se i plugin devono scrivere file temporanei. È più prudente usarlo su singoli file di configurazione o su directory statiche che non cambiano quasi mai.

Altri attributi utili oltre a i

chattr supporta diversi attributi, ma non tutti sono ugualmente utili in un contesto operativo quotidiano. Alcuni dei più noti sono:

  • a: consente solo l’append, cioè l’aggiunta in coda al file, impedendo la sovrascrittura completa;
  • c: comprime il file al livello del filesystem, se supportato;
  • d: esclude il file dai backup tramite strumenti che rispettano questo attributo;
  • e: indica l’uso di extents, comune su filesystem moderni.

Tra questi, a può essere utile per file di log, perché permette di scrivere solo in append e riduce il rischio di cancellazioni accidentali del contenuto. Per esempio:

sudo chattr +a /var/log/mio-log.log

Con questo attributo, un processo può aggiungere righe al log, ma non riscriverlo da zero. È una protezione da usare con attenzione, perché anche i tool di rotazione dei log potrebbero avere bisogno di rimuoverlo o gestirlo in modo specifico.

Quando chattr può creare problemi

Il problema più comune è l’errore operativo: un file viene protetto e poi ci si dimentica dell’attributo. Da lì nascono sintomi tipici come aggiornamenti falliti, editor che non salvano, script che non riescono a scrivere e servizi che mostrano errori di permesso apparentemente inspiegabili.

Un altro caso frequente è l’uso su directory gestite da applicazioni dinamiche. Se un CMS, un sistema di backup, un demone o un processo di deploy deve scrivere in quel percorso, l’attributo immutabile può bloccare tutto. Prima di applicarlo, è sempre meglio verificare il comportamento del servizio e fare una prova su un ambiente di test.

Infine, alcuni ambienti montano filesystem o storage che non supportano pienamente gli attributi estesi. In quel caso il comando può sembrare eseguito correttamente, ma non avere l’effetto desiderato. Per questo la verifica con lsattr è sempre obbligatoria.

Buone pratiche operative

Se vuoi usare chattr in modo serio e sicuro, segui queste regole pratiche:

  1. Applica l’attributo solo dopo aver validato il file.
  2. Fai sempre un backup prima di proteggere o sbloccare.
  3. Documenta quali file hanno attributi speciali e perché.
  4. Verifica periodicamente che gli attributi siano ancora quelli attesi.
  5. Non usare chattr come unica misura di sicurezza.

In un contesto server, è utile anche affiancare a chattr strumenti come controllo accessi, aggiornamenti regolari, backup offsite e monitoraggio delle modifiche. Se un file è davvero critico, la protezione migliore è sempre quella a più livelli.

Verifica e rimozione in sicurezza

Per controllare velocemente lo stato dei file protetti, puoi usare:

lsattr /percorso/del/file

Per rimuovere la protezione e modificare il file in sicurezza:

sudo chattr -i /percorso/del/file
sudo nano /percorso/del/file
sudo chattr +i /percorso/del/file

Il controllo finale deve sempre confermare che l’attributo sia stato ripristinato solo se davvero necessario. Se il file deve restare modificabile, non rimettere +i per abitudine: la scelta deve essere intenzionale.

Principio pratico: usa chattr per bloccare ciò che non deve cambiare, non per nascondere una cattiva gestione dei permessi o dei backup.

Conclusione operativa

chattr è uno strumento semplice ma potente. Con +i puoi proteggere file e directory da modifiche accidentali; con +a puoi limitare la scrittura ai soli append; con lsattr puoi verificare sempre lo stato reale degli attributi. La regola più importante è usarlo con disciplina: backup prima, verifica dopo, e documentazione chiara di ciò che hai protetto.

Se adottato bene, diventa un alleato concreto per hardening, manutenzione e prevenzione degli errori operativi. Se usato male, può trasformarsi in una trappola che blocca servizi e procedure. La differenza la fa il metodo: proteggere sì, ma sempre con controllo e reversibilità.