GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Chattr in Linux (imposta bit immutabile)

Chattr (Change Attribute) è un'utilità Linux della riga di comando utilizzata per modificare gli attributi del file. Può impostare e annullare determinati attributi di un file nel sistema Linux per proteggere l'eliminazione o la modifica accidentale di file e cartelle importanti, anche se hai effettuato l'accesso come utente root.

Quindi, usando il comando chattr rendi il file immutabile. In altre parole, significa che viene utilizzato per interrompere l'eliminazione accidentale di file e directory. Non puoi eliminare i file protetti tramite l'attributo chattr anche se hai il permesso completo sui file.

Questo è molto utile nei file di sistema come i file shadow e passwd che contengono tutte le informazioni utente e le password. Questi attributi possono essere impostati solo su file e directory che si trovano in un file system ext2, ext3 o ext4.

Sintassi del comando chattr e utilizzo

Di seguito è riportata la sintassi per il comando chattr:

       chattr [ -RVf ] [ -v version ] [ mode ] files...

Attributi del file che possiamo usare con il comando chattr:

  • a - il file può essere aperto solo in modalità append per la scrittura.
  • A - il record atime del file non viene modificato. Ciò evita una certa quantità di I/O del disco per i sistemi laptop.
  • c - il file viene compresso automaticamente sul disco dal kernel. Una lettura da questo file restituisce dati non compressi. Una scrittura su questo file comprime i dati prima di salvarli sul disco.
  • C - il file non sarà soggetto ad aggiornamenti copy-on-write. Questo flag è supportato solo sui file system che eseguono la copia su scrittura. Se il flag 'C' è impostato su una directory, non avrà alcun effetto sulla directory
  • d - il file non è candidato per il backup quando viene eseguito il programma di dump.
  • D - quando si modifica una directory, le modifiche vengono scritte in modo sincrono sul disco; questo equivale all'opzione di montaggio 'dirsync' applicata a un sottoinsieme di file.
  • i - il file non può essere modificato, cancellato o rinominato, nessun collegamento può essere creato a questo file e nessun dato può essere scritto nel file. Solo il superutente può impostare o cancellare questo attributo.
  • j - il file ha tutti i suoi dati scritti nel journal ext3 o ext4 prima di essere scritti nel file stesso,
  • s - se il file viene cancellato, i suoi blocchi vengono azzerati e riscritti sul disco.
  • S - se il file viene modificato, le modifiche vengono scritte in modo sincrono sul disco; questo equivale all'opzione di montaggio 'sync' applicata a un sottoinsieme di file.
  • t - il file non avrà un frammento di blocco parziale alla fine del file unito ad altri file
  • T - la directory sarà considerata la prima delle gerarchie di directory ai fini dell'allocatore di blocchi Orlov.
  • u - fa in modo che se un file viene eliminato, il suo contenuto venga salvato. Ciò consente all'utente di chiederne l'annullamento

1) Come impostare l'attributo del file (Imposta bit immutabile)

Per impostare un attributo di file useremo il comando chattr con + operatore seguito dal nome dell'attributo.

Controlliamo con esempi come impostare l'attributo immutabile su un file. Solo il root o l'utente con privilegio sudo può impostare e rimuovere il flag immutabile su un file.

Un file con un attributo immutabile:

  • Non può essere modificato, eliminato, rinominato
  • Nessun collegamento soft o hard può essere creato da nessuno, incluso l'utente root.
  • Nessun dato può essere scritto nel file

Creiamo un file vuoto usando il comando touch come segue:

$ touch file1

Ora vediamo come elencare gli attributi del file usando lsattr comando:

$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
-------------e-- ./file1

Aggiungi del contenuto al file usando il comando echo:

$ echo "Test of i attribute" > file1 
$ cat file1 
Test of i attribute

Ora possiamo impostare l'attributo immutabile usando +i sul file (file1).

$ sudo chattr +i file1
$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
----i--------e-- ./file1

Nei seguenti comandi cercheremo di aggiungere, eliminare sia utilizzando l'utente normale che l'utente sudo (root):

$ echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ sudo echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ rm -f file1 
rm: cannot remove 'file1': Operation not permitted
$ sudo rm -f file1 
rm: cannot remove 'file1': Operation not permitted

Possiamo osservare che soprattutto le operazioni non sono consentite.

Nota: Puoi proteggere file importanti come /etc/passwd o /etc/shadow , li rende protetti da una rimozione o manomissione accidentale e inoltre disabiliterà la creazione dell'account utente. Ma quando proverai a creare un nuovo utente di sistema, riceverai un messaggio di errore che dice "non è possibile aprire /etc/passwd". Se provi a cambiare la password, ti verrà chiesto di inserire una nuova password ma quando effettuerai l'accesso la volta successiva, la nuova password sembrerà non essere valida, dovrai utilizzare la vecchia password per accedere.

2) Come rimuovere l'attributo (non impostato) sui file

Per rimuovere qualsiasi attributo dal file dobbiamo usare - operatore seguito dal nome dell'attributo.

Nell'esempio seguente, annulliamo l'impostazione dell'attributo immutabile dal file (file1).

$ sudo chattr -i file1 
$ lsattr file1
-------------e-- ./file1

Ora dovresti essere in grado di eseguire tutte le normali operazioni sul file.

3) Come proteggere le directory con l'attributo 'i'

Per proteggere la directory, dobbiamo impostare l'attributo in modo ricorsivo (-R) usando + operatore.

Il comando seguente imposterà il bit immutabile nella directory ("linoxide") in modo ricorsivo:

$ sudo chattr -R +i linoxide/ 
$ lsattr -d linoxide
----i--------e-- linoxide/

Per annullare l'impostazione, devi utilizzare - operatore seguito da i attributo.

$ sudo chattr -R -i linoxide/

4) Aggiungi i dati su file senza modificare i dati esistenti

È possibile consentire a tutti di aggiungere semplicemente i dati su un file senza modificare o modificare i dati già inseriti con il a attributo.

Significa che puoi aggiungere contenuto solo al file corrente senza modificare i dati già presenti.

Gli esempi seguenti impostano l'attributo append al file (file2).

$ sudo chattr +a file2

6) Come elencare gli attributi dei file

Per elencare gli attributi correnti di file o directory dobbiamo usare il comando lsattr. Il comando seguente elencherà gli attributi di file per tutti i file e le cartelle nella directory corrente:

$ lsattr 
-------------e-- ./coreutils-8.22-18.el7.x86_64.rpm
-------------e-- ./pac
-------------e-- ./utils
-------------e-- ./linox

Puoi controllare l'attributo del file di un singolo usando il seguente comando:

$ lsattr coreutils-8.22-18.el7.x86_64.rpm 
-------------e-- coreutils-8.22-18.el7.x86_64.rpm

Per controllare gli attributi di una directory usa -d opzione

$ lsattr -d test
-------------e-- test/

Conclusione

Ora sappiamo come possiamo proteggere i nostri file e cartelle usando il comando chattr in Linux. Spero che ti sia piaciuto leggere questo tutorial e per favore lascia i tuoi suggerimenti nella sezione commenti qui sotto. Per ulteriori informazioni, fare riferimento a man chattr.


Linux
  1. comando chattr in Linux con esempi

  2. Comando wc Linux

  3. comando Linux grep

  4. ln Esempi di comandi in Linux

  5. file Esempi di comandi in Linux

Comando Gzip in Linux

Scollega comando in Linux (Rimuovi file)

Comando Chmod in Linux (autorizzazioni file)

Comando Gunzip in Linux

Comando Stat in Linux

Comando Chattr in Linux (attributi dei file)