I file possono anche avere attributi che sono espressi in un modo diverso rispetto ai permessi che abbiamo visto finora. Un esempio di ciò è rendere immutabile un file (una parola di fantasia, il che significa che non può essere modificato). Un file immutabile ha ancora la proprietà normale e le autorizzazioni di gruppo e RWX, ma non consentirà all'utente di modificarlo, anche se contiene l'autorizzazione scrivibile. Un'altra caratteristica di questo è che il file non può essere rinominato.
In questo post, discuteremo su come utilizzare il comando chattr per modificare gli attributi dei file in Linux e rendere immutabili i file importanti. chattr sta per Cambia attributo. Il comando chattr è uno strumento molto utile in Linux e viene utilizzato per modificare gli attributi dei file. Immutabile significa che una volta impostato l'attributo per alcuni file utilizzando il comando chattr, non sarai in grado di spostare il file, eliminare il file, creare un collegamento del file o modificare il file anche se hai pieno accesso a quel file. l'utente root inoltre non può apportare modifiche a quel file finché l'attributo non viene applicato. puoi usare il comando chattr per impostare e deselezionare gli attributi del file. l'utente root ha accesso solo per impostare o annullare gli attributi di file e directory utilizzando il comando chattr.
Diamo quindi un'occhiata ad alcuni esempi di comando chattr per modificare gli attributi dei file:
Imposta l'attributo "i" su un file
Supponiamo di avere un file chiamato geek.txt che è accessibile a tutti, ciò significa che qualsiasi utente può venire e cancellare, spostare o modificare quel file. Fare riferimento all'output di seguito.
# ls -l geek.txt -rwxrwxrwx. 1 root root 0 Apr 24 03:59 geek.txt # Everyone has full access to "geek.txt"
# rm geek.txt # I am able to delete the file rm: remove regular empty file `geek.txt'? y
Ora impostiamo l'attributo sul file geek.txt usando il comando chattr. Per impostare l'attributo dobbiamo usare il segno “+” e per annullare l'attributo dobbiamo usare il segno “–”.
# chattr +i geek.txt # Setting Attribute to a file
Dove,
io – Sta per Immutabile.
Puoi anche usare -V opzione per controllare l'output dettagliato durante l'impostazione dell'attributo su un file.
# chattr -V +i geek.txt # Setting attribute to a file with -V chattr 1.41.12 (17-May-2010) Flags of geek.txt set as ----i--------e-
Quindi impostiamo l'attributo al file geek.txt. per confermare lo stesso puoi usare il comando lsattr. Fare riferimento all'output di esempio di seguito. Noterai una i (evidenziata in rosso) nella sezione dei permessi del file.
# lsattr geek.txt # confirm if attribute set or not ----i--------e- geek.txt
Ora proviamo a rimuovere, eliminare, spostare e modificare i permessi del file e sono sicuro che non puoi fare nulla di tutto ciò.
1. Rimuovere il file:
# rm geek.txt # Removing the File rm: remove regular empty file `geek.txt'? y rm: cannot remove `geek.txt': Operation not permitted
# You can also try to remove the file forcefully. # rm -rf geek.txt # Removing the file forcefully rm: cannot remove `geek.txt': Operation not permitted
2. Sposta il file:
# mv geek.txt test.txt # Move the file mv: cannot move `geek.txt' to `test.txt': Operation not permitted
3. Modifica il file:
# cat >> geek.txt bash: geek.txt: Permission denied
4. Modifica l'autorizzazione del file:
# chmod 755 geek.txt chmod: changing permissions of `geek.txt': Operation not permitted
Come puoi vedere in tutti gli esempi precedenti, non siamo in grado di apportare modifiche a quel file.
Rimozione dell'attributo -i (immutabile) dai file
Per rimuovere l'attributo "i" usa il comando seguente.
# chattr -i geek.txt # Unset "i" attribute
Dopo aver rimosso l'attributo vedrai che la sezione dei permessi diventerà vuota.
# lsattr geek.txt --------------- geek.txt
Rendere immutabile una directory usando chattr
Ora proviamo a proteggere una directory cambiando il suo attributo in modo ricorsivo usando il comando chattr. Qui ho una directory denominata data e tutti hanno accesso completo a quella directory in modo ricorsivo. Fare riferimento all'output di esempio di seguito.
# mkdir data # chmod -R 777 data/ # ls -l total 4 drwxrwxrwx. 2 root root 4096 Apr 24 04:25 data
Ora imposta l'attributo su quella directory.
# chattr +i data/ # lsattr ----i--------e- ./data
Puoi anche impostare l'attributo in modo ricorsivo usando l'opzione -R con chattr.
# chattr -R +i data/
Dopo aver impostato l'attributo nella directory, ora prova a eliminare, spostare o creare un file, sono sicuro che non ti sarà permesso farlo. Fare riferimento all'output di esempio di seguito.
# rmdir data/ # Deleting the Directory rmdir: failed to remove `data/': Operation not permitted
# rm -rf data/ # Deletiing the Directory Forcefully rm: cannot remove `data': Operation not permitted
# mv data/ mydata # Moving the Directory mv: cannot move `data/' to `mydata': Operation not permitted
# cd data/ # cat > test.txt # Creating a File in the directory bash: test.txt: Permission denied
Dove possiamo effettivamente utilizzare il comando chattr?
Facciamo un esempio:come amministratore Linux, ovviamente, non vuoi che nessuno acceda ai tuoi file di configurazione, apporti modifiche a qualsiasi file o rimuova qualsiasi file di configurazione o ne faccia un uso improprio. È tua responsabilità renderlo sicuro e tenerlo al sicuro da mani sbagliate che non hanno l'autorizzazione per accedervi. Possiamo proteggere tutte le nostre cose di configurazione usando il comando chattr.
In Linux, tutti i file di configurazione sono archiviati nella directory /etc. Se impostiamo l'attributo alla directory /etc allora nessuno potrà accedere a nessuna delle tue configurazioni. Allora facciamolo.
# chattr +i /etc/ # Setting attribute to /etc directory
Ora proviamo a svolgere alcune attività:
Esempi:1 Crea un gruppo
# groupadd g5 groupadd: cannot lock /etc/group; try again later.
Esempio:2 Impostare la password per qualsiasi Utente
# passwd michelle Changing password for user michelle. New password: Retype new password: passwd: Authentication token manipulation error
Esempio:3 Crea un nuovo utente
# useradd thegeekdiary useradd: cannot lock /etc/passwd; try again later.
Come puoi vedere sopra, non siamo in grado di svolgere alcune attività come creare un nuovo utente, impostare la password per qualsiasi utente, creare un nuovo gruppo. non possiamo eseguire tutte queste attività perché quando creiamo un nuovo utente o impostiamo la password per qualsiasi utente, aggiorna il file /etc/passwd e il file /etc/shadow che non è possibile qui poiché impostiamo l'attributo per la directory /etc completa.
Nota :Qui ho impostato gli attributi per completare la directory /etc solo per spiegarti come esempio. Ma puoi impostare gli attributi del file secondo le tue necessità, ad esempio se vuoi controllare solo la gestione di utenti e gruppi, non è necessario impostare l'attributo per la directory /etc completa che puoi impostare solo per /etc/passwd e /etc/shadow e per i gruppi imposta l'attributo per /etc/group. Se vuoi controllare la tabella del filesystem, imposta l'attributo per /etc/fstab e così via.Ora prendiamo un altro esempio e smontiamo un filesystem. Fare riferimento all'output di esempio di seguito.
Esempio:4 Smonta un file system
# umount /media/ # Unmounting a File System can't create lock file /etc/mtab~2762: Permission denied (use -n flag to override)
Inoltre, non siamo in grado di smontare un filesystem. Per eseguire tutte le attività di cui sopra, dobbiamo annullare l'impostazione degli attributi che abbiamo applicato per la directory /etc.
Disimposta attributo usando il comando chattr
Possiamo annullare l'attributo usando il comando chattr con l'opzione -i.
# chattr -Vi /etc/ # Removing Attributes from directory chattr 1.41.12 (17-May-2010) Flags of /etc/ set as ----------I--e-
Consenti di aggiungere un file usando il comando chattr
Puoi consentire a un file di aggiungere dati usando il comando chattr con l'opzione +a. Applicando questo attributo puoi solo scrivere dati su quel file e non puoi eliminarli e spostarli.
Qui sto consentendo agli utenti di aggiungere dati sul file geekdiary.txt.
# chattr +a thegeekdiary.txt # Setting +a Attribute
Per verificare l'attributo applicato, utilizzare il comando seguente. Noterai una sezione di autorizzazione all'indirizzo.
# lsattr thegeekdiary.txt -----a-------e- thegeekdiary.txt
Come puoi vedere di seguito siamo in grado di vedere il contenuto del file.
# cat thegeekdiary.txt Welcome to thegeekdiary.com
Ora proviamo ad aggiungere alcuni dati nel file.
# cat >> thegeekdiary.txt # Writing some data Here you will get Linux Tutorials
# Ora conferma lo stesso usando il comando cat
# cat thegeekdiary.txt Welcome to thegeekdiary.com Here you will get Linux Tutorials
Quindi possiamo aggiungere correttamente i dati in thegeekdiary.txt. Ora proviamo a eliminare il file.
# rm thegeekdiary.txt # Deleting the File rm: remove regular file `thegeekdiary.txt'? y rm: cannot remove `thegeekdiary.txt': Operation not permitted
# rm -rf thegeekdiary.txt # Deleting the File Forcefully rm: cannot remove `thegeekdiary.txt': Operation not permitted
Per ulteriori informazioni relative al comando chattr puoi utilizzare i comandi seguenti sul tuo sistema Linux.
# man chattr # man lsattr
Dai un'occhiata ad alcune utili opzioni del comando chattr:
- +i – Un file con attributo +i non può essere eliminato, spostato, rinominato. in breve non può essere modificato.
- -i – Questa opzione permette di rimuovere i attributi dal file.
- -V – Per vedere l'output dettagliato
- -a – L'utilizzo di questo attributo consentirà solo di aggiungere dati su un file e non può essere eliminato o spostato.