Chattr è un programma a riga di comando UNIX pre-distribuito nella maggior parte delle distribuzioni Linux. Il ruolo di questo comando è consentire all’utente amministratore di impostare attributi di file che impongono restrizioni sui file.
Esistono alcuni attributi di file per ruoli diversi, come +i
, che impedisce che un file venga rinominato, eliminato o modificato, e l’attributo +a
, che consente solo di aggiungere nuovo contenuto, oltre ad alcuni altri che saranno discussi più avanti in questo tutorial.
Il vantaggio di utilizzare questo comando è che la restrizione si applica sia all’utente normale che all’utente root, rendendolo una buona scelta per proteggere file importanti e sensibili da modifiche accidentali o retroattive.
Il chattr
comando accetta tre argomenti: il primo è l’opzione, il secondo è l’attributo del file e il terzo è il percorso del file a cui si desidera applicare l’attributo del file selezionato.
$ chattr [option] [attribute*] [path/to/file*]
Quando specifichi l’attributo del file, utilizzerai principalmente gli operatori “ +
” e “-
”: l’operatore “+
” aggiunge la restrizione dell’attributo selezionato al file, mentre l’operatore “-
” la rimuove. Oltre a questo, utilizzi l’operatore “=
” per rimuovere tutti gli attributi esistenti e sostituirli con quelli selezionati.
Le opzioni disponibili chattr
sono l’opzione
“-R
” per applicare ricorsivamente l’attributo specificato a ogni file nella directory selezionata, l’opzione “-V
” per visualizzare i file modificati e l’opzione “-f
” per nascondere gli errori comuni.
Di seguito è riportato un elenco degli chattr
attributi più comunemente utilizzati e dei relativi scopi.
a
: Consenti solo l’aggiunta di nuovi contenuti imponendo restrizioni di scrittura, ridenominazione ed eliminazione.A
: Il record dell’ora di accesso (o atime) è congelato.c
: Abilita la compressione trasparente del file sul file system supportato.S
: Le modifiche al file vengono aggiornate in modo sincrono, il che garantirà l’integrità dei dati critici.i
: Abilita la modalità immutabile, che consente di visualizzare il contenuto del file ma impedisce azioni di scrittura, rinominazione, eliminazione o aggiunta.j
: Garantirà che le modifiche vengano applicate prima al journal ext3 e poi al file stesso.t
: Disattiva la fusione delle code.d
: Rifiuterà il processo di dump per il file selezionato, spesso utilizzato per creare backup.u
: Quando un file viene eliminato accidentalmente, viene generata una copia del file che potrà essere recuperata in seguito.e
: È un attributo predefinito applicato a tutti i file che indica che il file system utilizza le estensioni per mappare la posizione del file sul disco.L’elenco sopra riportato contiene alcuni attributi dall’elenco completo. Per vedere l’elenco completo, puoi usare il comando man chattr
. Tuttavia, questi sono sufficienti per un principiante, poiché il tuo lavoro ruoterà principalmente attorno a loro. Diamo ora un’occhiata ad alcuni esempi pratici di questo attributo in uso.
L’ +i
attributo ” ” rende il file immutabile, impedendo qualsiasi modifica, anche da parte di root. Uno scenario reale sarebbe proteggere un file di configurazione critico da modifiche accidentali.
$ sudo chattr +i myfile.txt
Il contenuto del file può comunque essere visualizzato nonostante le restrizioni di scrittura, ridenominazione ed eliminazione.
Per rimuovere le restrizioni imposte a un file nel metodo precedente, è possibile utilizzare l’attributo “-i
“.
$ sudo chattr -i myfile.txt
Nota che questo rimuoverà solo la restrizione per l’attributo “+i
“. Se l’utente assegna un attributo diverso o più attributi contemporaneamente, questi continueranno a esistere.
L’attributo +a
è molto simile all’attributo +i
e impedisce le azioni di scrittura, rinomina ed eliminazione, ma consente di aggiungere nuovo contenuto al file. È possibile applicare questo attributo ai file di registro per impedire modifiche retroattive.
$ sudo chattr +i myfile.txt
Per ripristinare il file al suo stato originale, utilizzare l’attributo -a
per rimuovere la restrizione “append-only”.
Per tenere traccia degli attributi esistenti o verificare se l’attributo applicato è impostato, è possibile utilizzare il comando lsattr
, che elenca tutti gli attributi assegnati al file selezionato.
$ lsattr myfile.txt
Quando a un file sono applicati più attributi ma si desidera sostituirli tutti con quello selezionato, è possibile specificare l’attributo con l’operatore =
u per questa attività.
$ sudo chattr =u myfile.txt
Per applicare un attributo selezionato a tutti i file nella directory di destinazione, utilizzare l’opzione -RV
per apportare modifiche ricorsive a tutti i file, quindi elencare i file interessati.
$ sudo chattr -RV +u mydir/
Chattr
è il comando con vari operatori e attributi, così come le sue opzioni disponibili. Se hai domande sull’argomento, sentiti libero di contattarci tramite la sezione commenti.