Last update Maggio 19, 2018 11:48 AM

 

drmlog  


Personal Website


Articoli / Articles
     

Pagina Iniziale Home Page

Informazioni About Me

Curriculum Vitae Resume
Didattica Teaching
Guide Tutorials
Articoli Articles
Libri Books

Contatti Contacts
     
 
     
 

La gestione dei permessi in ambiente Linux
di Roberto Saia

La gestione dei permessi nell'ambito dei sistemi operativi multiutente come Linux riveste una grande importanza e, proprio per questa ragione, ciascun sistema rende disponibili alcuni comandi pensati apposta per gestire queste operazioni. Tralasciando in questa occasione i tool di gestione muniti di interfaccia grafica, in quanto già di per se autoesplicativi, ci occuperemo in questo articolo di tre dei più importanti comandi operanti in questo contesto: chmod, chown e chgrp.

La gestione dei permessi in ambiente Unix/Linux viene effettuata tramite l'assegnazione a ciascun file di un certo valore che ne identifica il gruppo proprietario (GID) e l'utente proprietario (UID). Attraverso la modifica di questi elementi è possibile regolare i diritti di accesso: i più importanti sono quelli inerenti alla possibilità di leggere (r), di scrivere (w) e di eseguire (x); quando i permessi di esecuzione si riferiscono a una cartella, essi indicano la possibilità di accedere ad essa. I permessi di lettura, scrittura ed esecuzione, possono riferirsi a tre differenti livelli di utenza: il legittimo proprietario del file (u), tutti gli utenti che fanno parte dello stesso gruppo del proprietario (g) e, infine, tutti gli altri utenti (o).


Figura 1 - Gestione dei permessi tramite interfaccia grafica.

Gli strumenti con i quali è possibile amministrare questi permessi sono sostanzialmente due: il primo, che rappresenta probabilmente il metodo più intuitivo, è denominato metodo simbolico mentre, il secondo, solo all'apparenza più complesso a causa del sistema di numerazione adottato, è definito metodo numerico. Il metodo simbolico è basato sulla combinazione dei caratteri ai quali si è già fatto accenno (r, w, x, u, g, o) fatti precedere dal segno più (+) o meno (-) a seconda se occorre togliere o assegnare uno specifico permesso. Queste operazioni possono essere eseguite sia in modalità testuale, attraverso l'utilizzo di una console di comandi, che avvalendosi di apposite interfacce grafiche. Nell'esempio riportato in Figura 1 sono stati impostati i permessi in lettura, scrittura ed esecuzione (r, w, x) al proprietario (u), i permessi di lettura ed esecuzione (r, x) al suo gruppo (g) e solamente i permessi di lettura (r) a tutti gli altri (o). Le medesime operazioni possono essere eseguite per mezzo di una shell di comandi, avvalendosi del comando chmod:

chmod u+r+w+x Documenti

chmod g+r-w+x Documenti

chmod o+r-w-x Documenti

Eseguendo i precedenti comandi abbiamo, rispettivamente, assegnato i permessi al proprietario, al gruppo cui quest'ultimo appartiene e a tutti gli altri utenti. La sintassi è abbastanza chiara, in quanto, come già detto in precedenza, è sufficiente utilizzare il prefisso + o - per togliere o assegnare un permesso, facendo precedere il tutto dal destinatario dell'operazione (proprietario, gruppo o altri). Se si sceglie di adoperare il metodo numerico per l'amministrazione dei permessi, occorre utilizzare, almeno inizialmente, il formato binario ed operare tenendo conto che zero equivale ad un permesso negato ed uno ad un permesso concesso. Riferendoci al precedente esempio dove i permessi del proprietario erano impostati a rwx, quelli del gruppo a rx ed i rimanenti utenti a r, opereremo nel modo descritto in Tabella 1.

Tabella 1 - Concessione dei permessi mediante chmod.

Proprietario

Gruppo

Altri

r

w

x

r


x

r



1

1

1

1

0

1

1

0

0

Il numero binario risultante sarà 111 110 100 che in decimale equivale a 754, infatti:

Tabella 2 - Trasformazione da binario a decimale.

1x22 + 1x21 + 1x20

1x22 + 0x21 + 1x20

1x22 + 0x21 + 0x20

7

5

4

Si tratta di un sistema di assegnazione dei permessi di tipo ottale, in quanto, con i 3 bit a disposizione per ogni livello di permessi (Proprietario, Gruppo e Altri) è possibile rappresentare al massimo 8 informazioni (da 0 a 7).

Nota: in ambiente Unix/Linux, oltre ai permessi di base appena visti, relativi alla possibilità di leggere, scrivere ed eseguire un file, sono disponibili ulteriori tipologie di permessi particolari.

Il comando chmod supporta la modalità ricorsiva e, quindi, è possibile applicare le modifiche a tutto un insieme di file e/o cartelle:

chmod -R 777 documenti

Il precedente comando, eseguito in modalità ricorsiva mediante l'utilizzo dell'opzione -R, modifica i permessi della cartella documenti e di tutti i file in essa contenuti (concedendo tutti i permessi a tutti gli utenti, cioè 777).

Nota: riepiloghiamo brevemente alcune nozioni relative al sistema numerico binario, sistema che, a differenza di quello decimale (che adopera 10 valori per rappresentare i numeri), utilizza soltanto 2 valori ( zero ed uno); ciascun elemento della numerazione binaria si definisce bit e il suo valore è di tipo posizionale, cioè, dipende dalla posizione che esso assume; il valore assunto dai bit, letti da destra verso sinistra, è il risultato dell'elevazione a potenza del 2, quindi, 1, 2, 4, 8, 16, e così via; ad esempio, il valore binario di 11100 e' uguale al valore decimale 28 che equivale a (0+0+4+8+16); ricordiamo che un qualunque numero elevato alla potenza di zero fornisce come risultato 1.

Quando di ha la necessità di sostituire il proprietario e/o il gruppo ad uno o più file/cartelle, è possibile adoperare il comando chown che, appunto, svolge questo compito specifico. La sua sintassi generale di utilizzo è la seguente:

chown nuovo_proprietario:nuovo_gruppo nome_file

Nel successivo esempio, utilizzeremo chown per sostituire proprietario e gruppo al file denominato elenco.txt (rispettivamente con alex e webmaster):

chown alex:webmaster elenco.txt

Possiamo anche modificare solo il proprietario e non il gruppo, semplicemente operando come in precedenza ma omettendo quest'ultima informazione:

chown alex elenco.txt

Utilizzando la modalità ricorsiva (tramite l'apposita opzione -R) è possibile sostituire il gruppo a tutto un insieme di file e/o cartelle:

chown -R alex documenti

Molto simile al comando chown è chgrp, soltanto che in questo caso i suoi poteri di intervento si limitano alla sostituzione del gruppo di uno o più file/cartelle, senza consentire la modifica del proprietario. La sintassi generale per l'utilizzo di questo comando è la seguente:

chgrp nuovo_gruppo nome_file

Ad esempio, per modificare il gruppo esistente del file denominato elenco.txt con il gruppo addetti, scriveremo quanto segue:

chgrp addetti elenco.txt

Anche il comando chgrp supporta la modalità ricorsiva e, quindi, è possibile applicare le modifiche del gruppo a tutto un insieme di file e/o cartelle:

chgrp -R addetti documenti

Il precedente comando, eseguito in modalità ricorsiva mediante l'utilizzo dell'opzione -R, assegnerà il gruppo addetti alla cartella documenti e a tutti i file in essa contenuti.

 

Sebbene il contenuto delle guide, seppur in forma sintetica e/o adattata al contesto, sia tratto dai miei libri/eBook, l'occasionalità e i rapidi tempi di stesura che ne caratterizzano la pubblicazione non garantiscono l'assenza di errori e/o omissioni.

Ritorna all'indice dei tutorial Index


 
Roberto Saia  -  All Rights Reserved