Molte volte, una macchina Linux viene utilizzata da utenti diversi. Quindi ci sono possibilità che questi utenti accedano a un insieme comune di file. Questo apre la porta a problemi come l'eliminazione accidentale o la modifica di file importanti, cosa che tu, come amministratore, non vorresti assolutamente accadesse.
Per fortuna, esiste un comando, chiamato chattr - che è stato sviluppato per aiutarti in questo tipo di scenari specifici. In questo tutorial, discuteremo di questo strumento utilizzando alcuni esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi qui presenti sono stati testati su Ubuntu 18.04 LTS e Debian 10.
Il comando chattr di Linux
Fondamentalmente, il comando chattr viene utilizzato per modificare gli attributi dei file su un file system Linux. Di seguito è riportata la sua sintassi:
chattr [ -RVf ] [ -v version ] [ mode ] files...
Ed ecco cosa dice la pagina man a riguardo:
chattr changes the file attributes on a Linux file system.
The format of a symbolic mode is +-=[aAcCdDeijsStTu].
The operator '+' causes the selected attributes to be added to the
existing attributes of the files; '-' causes them to be removed; and
'=' causes them to be the only attributes that the files have.
The letters 'aAcCdDeijsStTu' select the new attributes for the files:
append only (a), no atime updates (A), compressed (c), no copy on write
(C), no dump (d), synchronous directory updates (D), extent format (e),
immutable (i), data journalling (j), secure deletion (s), synchronous
updates (S), no tail-merging (t), top of directory hierarchy (T), and
undeletable (u).
The following attributes are read-only, and may be listed by lsattr(1)
but not modified by chattr: compression error (E), huge file (h),
indexed directory (I), inline data (N), compression raw access (X), and
compressed dirty file (Z).
Not all flags are supported or utilized by all filesystems; refer to
filesystem-specific man pages such as btrfs(5), ext4(5), and xfs(5) for
more filesystem-specific details.
Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti una buona idea di come funziona il comando chattr.
Q1. Come usare il comando chattr?
Supponiamo di voler rendere un file di sola lettura. Quindi tutto ciò che devi fare è eseguire il comando chattr con l'opzione +i e il nome del file come input.
Ad esempio:
chattr +i test.txt
La schermata seguente mostra che nessun'altra operazione è riuscita sul file una volta che è diventato di sola lettura utilizzando chattr.
Nota :Come avresti già osservato, devi avere i privilegi di root per usare il comando chattr.
Q2. Come rimuovere la restrizione di sola lettura imposta da chattr?
Questo è semplice:tutto ciò che devi fare è usare l'opzione -i invece di +i. Ad esempio:
chattr -i test.txt
Quindi puoi vedere che il fattore di sola lettura è stato rimosso con l'opzione -i.
Q3. Come fornire l'autorizzazione di sola aggiunta a un file?
A volte, potresti non volere una restrizione completa su un file. Quello che voglio dire è che potresti voler fornire agli utenti l'accesso di sola aggiunta a un file, in modo che possano essere aggiunte nuove informazioni, ma le informazioni esistenti non possono essere eliminate o modificate. Questo è possibile anche usando chattr tramite l'opzione +a.
chattr +a test.txt
Quindi puoi vedere che ora potremmo aggiungere al file, ma non possiamo modificare le informazioni esistenti nel file né eliminare il file. Per invertire questo comportamento, usa l'opzione -a.
chattr -a test.txt
Q4. Come applicare una restrizione usando chattr a tutti i file in una directory?
Questo può essere fatto usando il flag -R, che ti permette di cambiare ricorsivamente gli attributi delle directory e il loro contenuto. Ad esempio, se vuoi creare tutti i file all'interno della test-dir directory come di sola lettura, usa il comando chattr nel modo seguente:
chattr -R +i ./test-dir/
Lo screenshot seguente mostra che la restrizione di sola lettura è stata applicata correttamente a tutti i file all'interno della directory.
Q5. Come controllare gli attributi chattr applicati ai file?
Finora, per verificare se un attributo chattr è stato applicato correttamente, abbiamo provato a eseguire operazioni come la modifica del file o l'eliminazione. Ma c'è un comando separato che ti consente di vedere facilmente se gli attributi sono stati applicati o meno. Il comando in questione è lsattr .
lsattr [FILENAME]
Ad esempio, lo screenshot seguente mostra l'output di lsattr suggerendo chiaramente che l'attributo 'i' è stato applicato a tutti i file nella directory.
Solo per riconfermare, ecco l'output dopo l'utilizzo dell'opzione -i.
Così puoi vedere nello screenshot qui sopra, l'attributo di sola lettura è stato rimosso da tutti i file.
Conclusione
Probabilmente sarai d'accordo sul fatto che chattr è uno strumento da riga di comando indispensabile se sei un amministratore di sistema o gestisci gli utenti su una macchina Linux in generale. L'uso efficace del comando può salvarti da molte seccature. Questo articolo dovrebbe essere sufficiente per iniziare con il comando. Dopo aver praticato gli esempi che abbiamo discusso qui, vai alla pagina man dello strumento per saperne di più.