Nei precedenti articoli abbiamo fatto una breve introduzione al mondo Unix e nell'articolo successivo abbiamo parlato di comandi base per la gestione del file system. Oggi andremo a parlare di permessi. Come esempio prenderemo sempre il mondo Ubuntu, coscienti del fatto che negli altri sistemi operativi il meccanismo è simile.
Essendo Linux un sistema operativo multiutente risulta particolarmente utile conoscere il meccanismo dei permessi.
Se proviamo a digitare il comando ls -al otterremo in output la lista dei file della cartella corrente, inclusi quelli nascosti. L'output sarà una cosa simile.

Nell'immagine sono stati evidenziate sia la colonna dei permessi che il proprietario e il gruppo di appartenenza.
Colonna dei permessi
Il primo carattere indica la tipologia dell'elemento e può avere tre valori, che sono:
- d, che significa che l'elemento è una directory (cartella);
- l, che sta per link simbolico;
- - che indica un file;
I 9 caratteri successivi indicano i permessi veri e propri. Nel dettaglio, sono divisi in 3 gruppi che sono il proprietario, il gruppo ed il terzo riguarda gli altri utenti.
Abbiamo tre possibili caratteri che rappresentano i permessi possibili e sono:
- r che indica il permesso di lettura read;
- w che indica il permesso di scrittura write;
- x che rappresenta il permesso di esecuzione;
Le colonne proprietario e gruppo indicano rispettivamente il proprietario del file ed il gruppo di appartenenza.
Fatta questa premessa, veniamo al sodo.
Ubuntu ci mette a disposizione diversi comandi per la gestione dei permessi. Vediamo meglio.
chmod
chmod è il comando che permette di modificare i permessi ed ha una duplice sintassi.
Sintassi simbolica
Consente di assegnare permessi diversi a proprietario, gruppo ed altri utenti. La sintassi è la seguente.
chmod a=rwx file
Il carattere a sinistra dell'uguale può avere diversi valori. Vediamo quali.
- a tutti;
- u utente proprietario;
- g gruppo;
- o altri utenti;
Questo comando indica il fatto che stiamo assegando i permessi a destra dell'uguale a chi indicato dal carattere alla sinistra dell'uguale.
Sintassi ottale
Con questa sintassi vengono assegnati i tre livelli di permesso simultaneamente. Si utilizzano 3 numeri per indicare i permessi. Vediamo come.
chmod 777 file
In questo esempio abbiamo dato i massimi permessi a tutti ("rwx" a tutti).
Vediamo il significato dei numeri:
- 7 significa rwx;
- 6 significa rw;
- 5 significa rx;
- 4 significa r;
- 3 significa wx;
- 2 significa w;
- 1 significa x;
- 0 significa nessun permesso;
Nella sintassi del comando abbiamo tre cifre che indicano rispettivamente l'utente corrente, il gruppo e gli altri utenti.
Una piccola nota. Spesso può capitare che Ubuntu faccia i capricci di fronte a un chmod . In questo caso la cosa da fare per risolvere il problema è semplicemente modificare il comando come segue.
sudo chmod 777 file
Questo significa che stiamo eseguendo il comando come superuser, che per gli utenti WIndows equivale all'esegui come amministratore. Ci verrà quindi chiesta la password di sistema. Non ci spaventiamo se non vediamo alcun carattere comparire sul terminale, è tutto normale!![]()
chown e chgrp
Ora che abbiamo capito come gestire i permessi, apriamo il lungo capitolo della gestione di gruppi e utenti.
chown
Il comando chown è utilizzato per cambiare l'utente proprietario e/o il gruppo di un file o una cartella. La sintassi è la seguente.
chown proprietario:gruppo file
Ne esiste anche una versione per il solo proprietario, che è la seguente.
chown proprietario file
Se ad esempio immaginiamo di voler assegnare il file Main.java all'utente developer ed al gruppo devs il comando sarà:
chown developer:devs Main.java
Ovviamente, come detto nella trattazione sui comandi per la gestione del file system, al posto del nome del file si può mettere anche il path.
chgrp
chgrp è molto simile a chmod . Ci permette di modificare solo il gruppo di un file o di una cartella. Non ci da alcuna possibiità di agire sul proprietario. La sintassi è la seguente.
chgrp gruppo file
chmod, chown e chgrp in modalità ricorsiva
Tutti e tre i comandi supportano la modalità ricorsiva. Può capitare ad esempio di voler modificare proprietario e/o gruppo di una cartella e di tutto il suo contenuto. Scriveremo allora:
chmod -R 777 cartella
chown -R proprietario:gruppo cartella
chgrp gruppo cartella
In questo modo modificheremo le informazioni relative alla cartella e, ricorsivamente, a tutto il suo contenuto.
Alcuni esempi
Andiamo a vedere alcuni esempi utili.
chmod 755 fileimposta i permessi completi al proprietario, lettura ed esecuzione per gruppo ed altri utenti;chmod u=rwx fileda i permessi completi all'utente, lasciando inalterati i permessi degli altri;chmod ugo=rwx fileimposta permessi completi a tutti;chmod ugo-x filequesta è una valida alternativa quando vogliamo rimuovere dei permessi. In questo caso stiamo rimuovendo il permesso di esecuzione a tutti.chmod ugo+x fileal contrario dell'esempio precedente, qui stiamo aggiungendo il permesso di esecuzione a tutti;chown -R nome:gruppo mia_cartellarende la directory chiamata mia_cartella con tutto il suo contenuto di proprietà di nome e gruppo;sudo chown -R root:root mia_cartellarende la directory mia_cartella di proprietà di root e del gruppo root;
Consigli e conclusioni
Il consiglio più importante che mi sento di dare è che, quando ci viene qualsiasi dubbio, dobbiamo consultare la pagina di manuale. In questo caso, se ci venisse qualche dubbio relativamente al funzionamento di chmod ad esempio, scriveremmo man chmod . Questa è una cosa che vale per qualsiasi volta in cui sorga qualche dubbio.
Nonstante ciò, la gestione dei permessi è un argomento un po' delicato. Conviene, per acquisire praticità seguire due approcci: il primo consiste nel farci una cartella di prova e "smanettare" solo all'interno di questa cartella. L'alternativa è quella di utilizzare una macchina virtuale per le nostre prove. Personalmente, a meno di esigenze particolari, consiglio di utilizzare una directory in locale.
Quindi, sperimentate gente!![]()