
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 file
imposta i permessi completi al proprietario, lettura ed esecuzione per gruppo ed altri utenti;chmod u=rwx file
da i permessi completi all'utente, lasciando inalterati i permessi degli altri;chmod ugo=rwx file
imposta permessi completi a tutti;chmod ugo-x file
questa è una valida alternativa quando vogliamo rimuovere dei permessi. In questo caso stiamo rimuovendo il permesso di esecuzione a tutti.chmod ugo+x file
al contrario dell'esempio precedente, qui stiamo aggiungendo il permesso di esecuzione a tutti;chown -R nome:gruppo mia_cartella
rende la directory chiamata mia_cartella con tutto il suo contenuto di proprietà di nome e gruppo;sudo chown -R root:root mia_cartella
rende 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!

Alessio Mungelli
Computer Science student at UniTo (University of Turin), Network specializtion, blogger and writer. I am a kind of expert in Java desktop developement with interests in AI and web developement. Unix lover (but not Windows hater). I am interested in Linux scripting. I am very inquisitive and I love learning new stuffs.
Articoli correlati
Un approccio a Java: I cicli - Introduzione
Ciao a tutti e bentornati! Sino ad ora, abbiamo parlato di variabili e di strutture di selezione, andando a considerare alcuni degli aspetti fondamentali di questi due concetti. Teoricamente, per…
Linux per Principianti: Guida all'installazione di Ubuntu
Abbiamo dato precedentemente una panoramica su qualche aspetto di base dei sistemi Unix e in particolar modo Ubuntu. Abbiamo infatti fatto un'introduzione, dopodichè abbiamo parlato di terminale Ubuntu e infine abbiamo parlato…
Linux Per Principianti: Terminale Ubuntu
Ho introdotto nell'articolo precedente, consultabile qui, i concetti base relativi al mondo del pinguino. Oggi andiamo a vedere alcune operazioni di base che si possono svolgere mediante linea di comando su…
Come installare Android Studio su GNU/Linux
Android studio è un tool ideato per sviluppare app per il sistema operativo mobile di Google, vediamo come installarlo passo passo. Innanzi tutto, bisogna installare il runtime java ossia il pacchetto "openjdk". Terminata l'istallazione del…
Firefox 22 disponibile: novità e download
Mozilla ha reso disponibile nei propri server la nuova versione stabile di Firefox 22, aggiornamento che aggiunge diverse novità al famoso browser open source compreso il supporto completo per WebRTC,…
Rilasciato Elementary Tweak: il programma per personalizzare elementaryOS
È stato rilasciato da poche ore Elementary Tweaks, un programma che puó essere considerato la controparte dei più conosciuti Ubuntu Tweak o Gnome Tweak Tool per elementaryOS. Vediamo di cosa si…
Rilasciato Linux 3.9.3
Terzo rilascio di mantenimento per la serie 3.9.x, é Linux 3.9.3. Quali sono le novità? Vediamo: iscsi-target: Fix processing of OOO commands cpufreq / intel_pstate: fix ffmpeg regression …
LibreOffice 4.0.3 rilasciato con 100 bugfix
È stata finalmente rilasciata la terza release di mantenimento di LibreOffice della serie 4.0.X: LibreOffice 4.0.3. Quali sono le novità? Tra le ottimizzazioni e correzioni della nuova versione, possiamo trovare una migliorata…
Come installare Webmin in Ubuntu
Webmin è un pannello di controllo web open source per l'amministrazione del sistema per Linux/UNIX. Webmin consente di gestire utenti, gruppi, quote disco, oltre a configurare i servizi più diffusi,…