Come elencare e gestire gli attributi dei file su Linux

Quando usiamo Linux abbiamo molti modi per gestire l’accesso alle risorse: il più semplice è impostare i permessi UGO/RWX appropriati su file e directory. In alcune occasioni potremmo anche voler utilizzare il setuid, il setgid e lo sticky bit. Inoltre, possiamo utilizzare ACL (Access Control List) al fine di raggiungere un livello di granularità più elevato o implementare la sicurezza del controllo di accesso obbligatorio come quelli basati su SELinux o AppArmor.

Oltre alle strategie sopra menzionate, sulla maggior parte dei filesystem possiamo manipolare un insieme di “attributi” per, ad esempio, rendere immutabile un file.

In questo articolo parliamo di attributi di file su Linux, e impariamo come controllare gli attributi assegnati a un file e come gestirli.

In questo tutorial imparerai:

  • Per cosa possono essere utilizzati gli attributi di file
  • Come elencare gli attributi dei file
  • Come assegnare/rimuovere attributi di file

Introduzione

Il controllo dell’accesso discrezionale su Linux (DAC) e altri sistemi operativi basati sullo stesso, è, nella sua forma di base, implementato applicando un determinato insieme di autorizzazioni ai file e impostando la loro proprietà su un utente e un gruppo specifico: questo è  chiamare i permessi UGO/RWX.

Elencare gli attributi dei file

Per elencare gli attributi dei file su Linux, possiamo usare  lsattr utility, che è inclusa nel e2fsprogs pacchetto sulle distribuzioni Linux più utilizzate (nonostante il nome, può essere utilizzata anche su filesystem diversi da ext2/3/4, come xfs).

L’utilità accetta uno o più file come argomenti e supporta una serie di opzioni per modificarne il comportamento. Vediamo un esempio del suo utilizzo. Quando lsattr viene invocato senza alcun argomento o opzione, restituisce l’elenco degli attributi associati ai file e alle directory contenuti nella directory di lavoro, proprio come lsfa il comando:

Terminale
lsattr

Attributi dei file su linux 1
Nell’esempio sopra, puoi vedere che ho invocato il comando nella mia directory HOME. Dall’output del comando puoi vedere che le directory visibili hanno solo come attributo la “e”: questo significa che stanno usando “extents” per mappare i blocchi su disco (questo è legato a come funziona il filesystem ext4). Come puoi vedere, i file nascosti non sono inclusi nell’output per impostazione predefinita; per includerli possiamo passare opzione -a al comando. Possiamo anche elencare gli attributi di una directory in modo ricorsivo usando l’ opzione -R, oppure elencare gli attributi di una directory invece di quelli del suo contenuto, usando -d.

Un’altra opzione utile è -l quella che serve per visualizzare il nome completo degli attributi associati ai file, al posto della singola lettera che li identifica:

Terminale
lsattr -l

Il significato dei vari attributi può essere recuperato nel manuale di utilità di chattr, che come vedremo tra poco, serve per impostare o rimuovere attributi. Qui ne riportiamo solo alcuni (alcuni attributi possono essere impostati solo su determinati filesystem – “j”, ad esempio non possono essere impostati su un filesystem ext2, che non ha journaling):

  • A Non aggiornare l’atime
  • S Aggiornamento sincrono
  • D Aggiornamento sincrono delle directory
  • a solo append
  • c compresso
  • d no dump
  • i immutabile
  • s cancellazione sicura
  • T top of directory hierarchy
  • j data journalling
  • t no tail-merging
  • u Non cancellabile

Impostazione e rimozione di attributi

L’utilità che utilizziamo per assegnare gli attributi è chattr; la sua sintassi è piuttosto semplice: per assegnare un attributo a un file utilizziamo un segno + seguito dalla lettera dell’attributo e passiamo il percorso del file a cui deve essere assegnato l’attributo, come argomento del comando. Vediamo un esempio.

Supponiamo di avere un file (diciamo che si chiama example.txt), e di volergli assegnare un attributo “a”, per evitare che il suo contenuto venga sovrascritto. Ecco il comando che vorremmo eseguire:

Creiamo prima il file di testo:

Terminale
touch example.txt

Attributi dei file su linux 2

il file creato ha un attributo “e”.

Per cambiare il suo attributo usiamo il comando di seguito:

Terminale
sudo chattr +i example.txt

Usando il segno “+” ho impostato l’ attributo “i” Un file con un attributo “i” associato a esso, non può essere modificato, cancellato o rinominato.

Risultato:

Terminale
sudo lsattr example.txt

Attributi dei file su linux 3

Ora se proviamo a eliminare il file example.txt, il sistema non ce lo permetterà.

Per ritornare allo stato precedente usiamo lo stesso comando ma al posto del segno “+” usiamo il segno “-“.

Terminale
sudo chattr -i example.txt

Puoi anche combinare più attributi con il comando chattr. Ad esempio, se desiderate rendere immutabile un file e anche indicare al kernel di non tenere traccia dell’ultimo accesso effettuato, eseguire i comandi seguenti:

Terminale
sudo chattr +iA example.txt

Per ritornare allo stato precedente:

Terminale
sudo chattr -iA example.txt

Nota che ho anteposto al comando sudo, poiché la maggior parte degli attributi può essere assegnata o rimossa solo dall’utente root. Possiamo verificare che l’attributo sia stato assegnato al file usando lsattr:

Terminale
lsattr -l example.txt

Ora, se proviamo a scrivere per sovrascrivere il file utilizzando l’ operatore di reindirizzamento> della shell , riceviamo un errore:

Terminale
echo "line" > example.txt

Ecco un altro esempio. L’ attributo i può essere utilizzato per rendere un file immutabile e impossibile da eliminare o spostare, anche dall’utente root (che può, tuttavia, rimuovere del tutto l’attributo):

Terminale
sudo chattr +i example.txt
sudo rm example.txt

Rimozione degli attributi

Per rimuovere uno o più attributi dai file, tutto ciò che dobbiamo fare è cambiare l’”operatore” che utilizziamo con chattr. Invece di +noi usiamo -. Per rimuovere gli attributi ie aimpostati nell’esempio precedente dal file “example.txt”, eseguiremmo:

Terminale
sudo chattr -ai example.txt

In alcuni casi si vuole applicare una logica “inversa”, e sostanzialmente dire: “rimuovere tutti gli attributi tranne quelli specificati” per applicare questa strategia possiamo utilizzare l’operatore.

 Grazie! per l’utilizzo della Guida di Linuxiano.

 Trovi questo tutorial utile? Condividi con i tuoi amici per tenerlo in vita.
 Sii il primo a commentare, apprezzo i tuoi suggerimenti. Per ulteriori domande potete commentare qui sotto.

Fonte: https://linuxiano.altervista.org/2022/10/attributi-dei-file-su-linux/

Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!

Hai dubbi o problemi? Ti aiutiamo noi!

Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.
Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
Amazon Music
Scopri le ultime offerte per dischi ssd su Acquista su Amazon
Scopri le ultime offerte per memorie RAM DDR su Acquista su Amazon
Scopri le ultime offerte per Chromebook su Acquista su Amazon
Scopri le ultime offerte per Raspberry su Acquista su Amazon

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.