Capitolo successivo Capitolo precedente Indice

32. Proprietà, permessi e attributi

Le informazioni ``amministrative'' su file e directory sono conservate nel filesystem che si utilizza. In questo senso, le informazioni gestite e gestibili dipendono dalle possibilità del sistema operativo e dal tipo di filesystem a disposizione.

La tabella (seguente) elenca i programmi e i comandi a cui si accenna in questo capitolo.


Nome Descrizione
chown Cambia la proprietà (appartenenza) di file e directory.
chgrp Cambia il gruppo proprietario di file e directory.
umask Comando di shell per cambiare la modalità predefinita di creazione dei file.
chmod Cambia la modalità di file e directory.
chattr Cambia gli attributi particolari di un filesystem ext2.
lsattr Elenca gli attributi particolari di un filesystem ext2.
touch Cambia la data e l'orario di accesso e/o di modifica.
Riepilogo dei programmi e dei comandi per la gestione delle proprietà, dei permessi e degli attributi di file e directory.

32.1 Proprietà

Ogni file e directory appartiene necessariamente a un utente e a un gruppo simultaneamente. L'appartenenza a un utente o a un gruppo particolare attribuisce significato ai permessi di accesso. Questi sono distinguibili in base al fatto che chi vuole accedere sia l'utente proprietario, o un utente del gruppo proprietario o un altro utente non meglio definito.

$ chown

chown [<opzioni>] [<utente>][:|.][<gruppo>] file...

Cambia la proprietà dei file. Se viene fornito solo il nome dell'utente o il suo numero UID, questo diviene il nuovo proprietario dei file. Se il nome dell'utente, o il suo numero, è seguito da : (due punti) oppure da . (punto) e dal nome o dal numero di un gruppo (GID), vengono cambiate le proprietà dell'utente e del gruppo. Se dopo : o . non segue il nome del gruppo, viene attribuito il gruppo a cui appartiene l'utente. Se prima di : o . non viene indicato il nome dell'utente, viene cambiata solo la proprietà del gruppo.

Alcune opzioni

-R

Esegue l'operazione anche nelle sottodirectory.

$ chgrp

chgrp [<opzioni>] <gruppo file>...

Cambia il gruppo proprietario. Il gruppo, nell'argomento del comando, può essere espresso con il nome o con il numero GID. È equivalente a chown quando non si specifica l'utente.

Alcune opzioni

-R

Esegue l'operazione anche nelle sottodirectory.

32.2 Permessi

I permessi, attribuiti a un file o a una directory, definiscono le operazioni che con questo possono essere compiute a seconda dell'utente. La gestione di questi è già stata introdotta nella sezione `Introduzione ai permessi'.

Brevemente, si distinguono tre tipi di accesso:

Il significato del tipo di accesso dipende dal tipo di file cui si intende applicare.

Per un file normale:

Per una directory:

I permessi si possono esprimere in due forme diverse: attraverso una stringa alfabetica o un numero ottale. La stringa utilizza le lettere r, w e x per rappresentare i permessi di lettura, scrittura ed esecuzione, mentre quando si utilizza la notazione ottale, il numero 4 rappresenta un permesso in lettura, il numero 2 rappresenta un permesso in scrittura e il numero 1 rappresenta un permesso in esecuzione. Si ottiene la combinazione di più tipi di permesso di accesso sommando le cifre necessarie.

La notazione numerica ottale è preferibile rispetto a quella simbolica essendo più completa e immediata. In particolare, se il numero non utilizza tutte le cifre, si intende che manchino quelle anteriori e che queste siano semplicemente azzerate.

I permessi di un file o di una directory si esprimono per intero attraverso quattro cifre ottali (12 bit), dove la prima riguarda alcune situazioni particolari:

  1. sticky bit, se si tratta di un eseguibile, durante l'esecuzione, salva l'immagine testo nella memoria virtuale;
  2. SGID, attiva il numero del gruppo (GID) durante l'esecuzione;
  3. SUID, attiva il numero dell'utente (UID) durante l'esecuzione.

Le altre tre cifre, riguardano rispettivamente i permessi attribuiti all'utente proprietario, al gruppo e agli altri utenti.

Per esempio, il permesso 755 (pari a 0755) indica che l'utente proprietario può leggere, modificare ed eseguire il file mentre, sia gli utenti del gruppo che gli altri possono solo leggere ed eseguire il file.

umask

Quando viene creato un file, questo appartiene automaticamente all'utente che lo crea e al gruppo a cui appartiene l'utente. I permessi gli vengono attribuiti in base a una maschera, detta umask. Questa maschera rappresenta i permessi che non vengono attribuiti.

Di solito, il suo valore è 022 e con questo, non viene attribuito il permesso di scrittura (2) né al gruppo proprietario, né agli altri utenti.

Il valore di questa maschera può essere modificato attraverso un comando interno di shell: umask ( umask).

$ chmod

chmod [<opzioni>] <modo> <file>...

Cambia i permessi sui file indicati come argomento. Le modifiche dei permessi avvengono in base alle specifiche indicate nell'argomento precedente all'elenco dei file e si possono esprimere con la sintassi seguente:

[ugoa...[[+-=][rwxXstugo...]...][,...]

Una combinazione delle lettere ugoa controlla il tipo di utenti a cui si vuole riferire il cambiamento di permesso. I segni +-= indicano il tipo di cambiamento sui permessi, il gruppo finale di lettere rwxXstugo indica i permessi su cui agire.

Utenti (ugoa)

u

Utente proprietario del file.

g

Gruppo proprietario del file.

o

Gli altri utenti.

a

Tutti.

---------

Se l'indicazione degli utenti su cui intervenire non viene fornita, la variazione agisce in funzione della maschera predefinita (umask) che può essere modificata attraverso il comando di shell umask ( umask). In pratica, la variazione riguarda tutti i tipi di utente, a esclusione dei bit attivati nella maschera predefinita.

Variazione dei permessi (+-=)

+

I permessi indicati vengono aggiunti.

-

I permessi indicati vengono tolti.

=

I permessi vengono modificati in modo da diventare esattamente come indicato.

Permessi da variare (rwxXstugo)

r

Permesso di lettura.

w

Permesso di scrittura (modifica).

x

Permesso di esecuzione o di accesso se si tratta di directory.

X

Come x, ma interviene sulle directory e solo sui file che hanno già un permesso in esecuzione per un utente qualunque. In pratica, si cerca di intervenire solo sui file per i quali il permesso di esecuzione può avere senso.

s

Riguarda solo i file eseguibili. A seconda dell'indicazione degli utenti su cui intervenire, attiva lo user ID (SUID) o il group ID (SGID) durante l'esecuzione.

t

Riguarda solo i file eseguibili. Salva l'immagine testo del programma nella memoria virtuale (attiva lo sticky bit).

u

Attribuisce gli stessi permessi che ha già l'utente proprietario di quel file.

g

Attribuisce gli stessi permessi che ha già il gruppo proprietario di quel file.

o

Attribuisce gli stessi permessi che hanno già gli altri utenti per quel file.

---------

<!>   Non è possibile cambiare i permessi dei link simbolici: se si interviene su un link simbolico, si agisce in realtà sul file di destinazione.

Alcune opzioni

-R

Esegue l'operazione anche nelle sottodirectory.

Esempi

$ chmod -R go-rwx ~/*

Toglie sia al gruppo che agli altri utenti la possibilità di accedere in qualunque modo ai file della propria directory home e anche nelle sottodirectory successive.

32.3 Attributi

Le caratteristiche standard di un file in un sistema Unix sono le proprietà e i permessi. In alcuni casi è possibili attribuire altri attributi come quando si utilizza il filesystem ext2. È naturalmente compito del kernel fare in modo che questi attributi siano gestiti in modo corretto.

$ chattr

chattr [<opzioni>] [<modo>] <file>...

Cambia gli attributi su un filesystem di tipo ext2 (Second Extended). L'interpretazione corretta di questi attributi dipende dal kernel, e per il momento non sono tutti funzionanti come progettato (in particolare mancano ancora gli attributi c e u).

Gli attributi vengono espressi attraverso una modalità simbolica secondo la sintassi seguente.

+-=[ASacdisu]

Variazione degli attributi (+-=)

+

I permessi indicati vengono aggiunti.

-

I permessi indicati vengono tolti.

=

I permessi vengono modificati in modo da diventare esattamente come indicato.

Attributi da variare (ASacdisu)

A

Non aggiorna la data di accesso (atime). Può essere utile se si vuole ridurre l'attività a carico del disco.

a

Fa in modo che il file, se viene aperto in scrittura, permetta solo l'aggiunta di dati (append).

c

Fa in modo che il kernel provveda a comprimere e decomprime automaticamente i file in modo trasparente.

d

Serve al programma dump per sapere che il file in questione non è candidato per un recupero (backup).

i

Fa in modo che il file non sia modificabile, né cancellabile, né sia possibile cambiargli nome, né sia possibile creare un hard link verso di esso (i link simbolici restano ammissibili). Solo l'utente root può attribuire o togliere questo attributo.

s

Fa in modo che la cancellazione avvenga in modo ``sicuro'' dal punto di vista della riservatezza: i blocchi che componevano il file vengono riscritti con dati nulli.

S

Fa in modo che le operazioni di I/O su questo file avvengano in modo sincronizzato, senza utilizzare la memoria cache.

u

Fa in modo che sia possibile il recupero dalla cancellazione (quando il file è stato cancellato).

$ lsattr

lsattr [<opzioni>] <file>...

Elenca gli attributi dei file su un filesystem ext2 (Second Extended).

Alcune opzioni

-R

Esegue l'operazione anche nelle sottodirectory.

-a

Elenca tutti i file, anche quelli che iniziano con un punto (i cosiddetti file nascosti).

-d

Elenca anche le directory come i file, invece di elencare direttamente il loro contenuto.

32.4 Data

Tutti i file riportano tre indicazioni data-orario:

$ touch

touch [<opzioni>] file...

Cambia la data (si intende sia la data che l'ora) di accesso e di aggiornamento dei file. Se non viene specificata una data, viene utilizzata la data e l'ora ottenuta dall'orologio del sistema nel momento in cui viene eseguito il comando. Se vengono specificati file che non esistono, questi vengono creati vuoti.

Alcune opzioni

-a | --time=atime | --time=access | --time=use

Viene cambiata solo la data di accesso.

-c | --no-create

Non vengono creati i file che non esistono.

-m | --time=mtime | --time=modify

Cambia solo la data di aggiornamento.

-r <file-di-riferimento> | --file <file-di-riferimento>

Riproduce gli stessi dati del file indicato.

-t <MMDDhhmm>[[<CC>]<YY>[.<ss>]]

Usa l'argomento (mese, giorno, ore, minuti, secolo, anno, secondi) invece di utilizzare la data corrente.

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice