GNU/Linux >> Linux Esercitazione >  >> Linux

chattr Esempi di comandi per modificare gli attributi dei file (rendere i file immutabili)

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.


Linux
  1. Comando Chattr in Linux (imposta bit immutabile)

  2. comando chattr in Linux con esempi

  3. 5 Esempi di comandi Wget per scaricare file in Linux.

  4. 11 Esempi di comandi Linux diff3 (confronta 3 file riga per riga)

  5. file Esempi di comandi in Linux

Comando Chattr in Linux (attributi dei file)

lsof Command in Linux (10 esempi)

Touch Command in Linux (5 esempi)

Comando Linux WC con esempi

Comando Stat:Visualizza gli attributi di file e directory

Linux make Command con esempi