prof. Nunzio Brugaletta

atapSO

EnneBi – Computer Science
AvantiIndietroInizio




Diritti e proprietà dei file

Se si elencano i file contenuti in una directory utilizzando il parametro l (long) è possibile ottenere delle informazioni suppletive sui file:

$ ls -l
-rw-------    1 tux   tux      8434 2003-08-27 18:15 bfsh-koc.zip
-rw-r--r--    1 tux   tux     19617 2004-06-12 19:27 Blow.c
-rw-r--r--    1 tux   tux       632 2004-06-24 19:07 Blow.h
-rw-r--r--    1 tux   tux       190 2004-10-20 19:08 due.cc
drwxr-xr-x    1 tux   tux     13287 2004-10-29 19:08 duex
-rw-r--r--    1 tux   tux     17657 2005-02-01 19:42 ext2.txt
-rwxr-xr--    1 tux   tux        90 2005-02-16 19:50 filcom

oltre alla dimensione, alla data e ora di modifica, è riportato il proprietario del file (chi lo ha creato) e il gruppo primario cui appartiene il proprietario. Una cosa interessante è il primo gruppo di caratteri che indica i diritti sul file.

Per quanto riguarda i diritti sul file, sono previsti 10 caratteri che possono essere:

Carattere

Significato

-

Indica assenza del diritto

d

Specificato solo come primo carattere: indica se il file è una directory

4 o r

Read: diritto di lettura sul file

2 o w

Write: diritto di scrittura, modifica del file

1 o x

eXecute: diritto di esecuzione

A parte il primo carattere che indica se si tratta di un file semplice o, per esempio, di una directory, il resto va letto a gruppi di 3 nella forma rwx: il primo gruppo da sinistra indica i diritti del proprietario, il secondo quelli del gruppo, il terzo quelli degli altri. Per esempio la stringa (divisa, per comodità di lettura, nelle sue componenti) - rwx r-x r-- associata al file filcom, indica che si tratta di un file normale, che il proprietario ha tutti i diritti, che il gruppo ha diritti di lettura ed esecuzione e che gli altri hanno il solo diritto di lettura. I diritti su un file possono essere espressi anche come numeri secondo lo schema riportato nella tabella precedente, così, per esempio i permessi di filcom possono essere espressi con la combinazione 754 (tre numeri in ottale). 7 sono i diritti del proprietario (r+w+x ovvero 4+2+1), 5 quelli del gruppo (r+x ovvero 4+1), 4 quelli degli altri (r ovvero 4).

I diritti assegnati per default all'utente sono visualizzabili con il comando umask (User MASK):

$ umask
0022
$ umask -S
u=rwx,g=rx,o=rx

nel primo caso, utilizzando il comando senza l'uso di parametro, viene fornita la maschera dei diritti: la sequenza di numeri va letta nel senso dei diritti non assegnati. Gli ultimi tre numeri indicano i diritti non assegnati rispettivamente a proprietario, gruppo, altri: il primo vale 0 cioè presenza di tutti i diritti per proprietario, i rimanenti due numeri assegnati rispettivamente al gruppo e agli altri indicano la mancanza del diritto associato al numero 2 (scrittura). Ciò in accordo anche a quanto visualizzato di conseguenza all'uso del parametro -S (formato simbolico). In quest'ultimo caso i diritti sono preceduti da un simbolo alfanumerico per individuare il destinatario (User, Group, Others). Tutti i file creati dall'utente avranno i diritti specificati nella maschera nel modo esposto.

Solo root o il proprietario del file può modificare i diritti su un file. Se si vuole, per esempio essendo valida la situazione precedente, dare, a partire dal prossimo file creato, al gruppo il diritto di scrittura si può digitare:

$ umask 0002

in questo caso, da questo momento in poi, tutti i file creati dall'utente hanno abilitato il diritto di scrittura per il gruppo.

La maschera di default per gli utenti può essere definita come variabile di ambiente UMASK in /etc/login.defs o come comando umask specificato in /etc/profile.

Per modificare i diritti solo per un singolo file:

$ chmod g-r due.cc

in questo modo si cambiano i diritti (CHange MODe) sul file due.cc. Viene tolto il diritto di lettura (-r) al gruppo (g). Se si voglio aggiungere diritti si usa il simbolo + al posto del simbolo -.

Si può avere la necessità di modificare il proprietario o il gruppo di un file in modo da poterlo, per esempio, condividere in modifica con tutti gli utenti di uno specifico gruppo:

$ sudo addgroup team 
Aggiunta del gruppo «team» (GID 1002) ... 
Fatto.
$ sudo adduser tux team 
Aggiunta dell'utente «tux» al gruppo «team» ... 
Aggiunta dell'utente tux al gruppo team 
Fatto.
$ sudo adduser utente2 team 
Aggiunta dell'utente «utente2» al gruppo «team» ... 
Aggiunta dell'utente utente2 al gruppo team 
Fatto.
$ less /etc/group
...
team:x:1002:tux,utente2
$ chown tux:team file
$ ls -l file 
totale 0 
-rw-r----- 1 tux team 37843 2012-01-24 17:57 file

Si genera il gruppo team e si aggiungono al gruppo gli utenti tux e utente2, dopodiché si cambiano gli accessi al file in modo che, come evidenziato dall'output dell'ultimo comando, tux possa modificare il file, gli utenti registrati nel gruppo team abbiano la possibilità di leggerne il contenuto e a tutti gli altri utenti ne sia impedito qualsiasi uso. A questo punto si potrebbe generare una directory cui possono accedere solo gli utenti del gruppo e inserire il file.

Si possono cambiare proprietario e gruppo di un file solo se si è proprietari del file stesso. Ovviamente root può modificare le proprietà di qualsiasi file di qualsiasi proprietario.




AvantiIndietro - Inizio

http://ennebi.solira.org

ennebi@solira.org