Nell'articolo Gestire gli utenti in Linux abbiamo chiarito le idee sul significato di utente in ambiente Unix, ora cercheremo di rispondere alla seconda domanda che ora vi sta torturando: ma come possiamo impostare delle restrizioni in base all'utente o al gruppo di appartenenza? In altre parole, cosa ce ne facciamo ora degli utenti?
Innanzitutto tramite gli utenti È possibile delineare gli spazi entro cui È possibile muoversi (inteso sia come spazio fisico occupabile su disco o come accesso a file o directory). Ogni utente ha tra l'altro una propria directory personale (in /home/nomeutente che può essere indicata anche con ~nomeutente).
Ma veniamo al nocciolo della questione: i permessi.
I permessi sono preposti a delineare ciò che un utente può compiere oppure no in base ai privilegi che gli sono stati attribuiti dall'amministratore. Per i file essi possono essere di tre tipi: lettura, scrittura, esecuzione. Con lettura si intende il privilegio di un utente di poter vedere il contenuto di un file (per esempio con cat nomefile) o di una directory. Il file /etc/shadow È un esempio di file la cui lettura non È consentita a un utente normale.
Tramite il permesso di scrittura si ha la possibilità di modificare un file (come per esempio cambiare qualche lettera in un file di testo) o il contenuto di una directory. Per cancellare un file È necessario avere i permessi in scrittura nella directory dove il file risiede. Un esempio di file con l'accesso in scrittura negato a un normale utente È il file /etc/passwd. Il permesso di esecuzione ci consente di rendere eseguibile un file o di poter entrare in una directory. Ogni file può quindi esser reso eseguibile (questo però ha senso ovviamente se si tratta di uno script o di un binario compilato, cioÈ un'applicazione come nel senso di Windows).
Andiamo ora ad esaminare i permessi di qualche file e directory. Per far questo usiamo il comando ls -la (equivalente del dir di DOS, l'opzione -la ci fa mostrare delle informazioni dettagliate su tutti i file, compresi quelli nascosti, cioÈ il cui nome inizia con .).
andrea@lnxbox1:~$ ls -la /etc/passwd -rw-r--r-- 1 root root 1357 May 12 15:09 /etc/passwd
Questo output può essere suddiviso in 9 campi:
- permessi e tipo (-rw-r--r--)
- hard links (1)
- owner (root)
- dimensione (1357)
- dimensione (1357)
- mese dell'ultima modifica (May)
- giorno dell'ultima modifica (12)
- ora dell'ultima modifica (15:09)
- file (/etc/passwd)
I campi che in questo momento a noi interessano sono il primo il terzo e il quarto. Il primo campo È composto da 10 caratteri che vanno suddivisi in 4 gruppi (3 da 3 caratteri e uno da un carattere) a partire da destra (- È il primo rw- il secondo e r-- il terzo e r-- il quarto). Il primo gruppo (di un carattere soltanto indica di cosa si tratta la voce (file, directory, device, link simbolico, ecc.), mentre i restanti tre gruppi indicano i permessi rispettivamente per owner (proprietario), group (gruppo) e other (tutti gli altri). Il permesso di lettura È indicato da una r, quello in scrittura da una w e quello in esecuzione da una x.
Ritornando all'esempio il file /etc/passwd (si tratta di un file perchÈ il primo carattere È un -) può essere letto da tutti ma modificato solo dal proprietario, in questo caso root.
andrea@lnxbox1:~/programmazione$ ls -la total 96 drwxr-xr-x 6 andrea amici 4096 May 13 00:19 . drwxr-xr-- 78 andrea amici 12288 May 13 00:14 .. -rwxr-xr-x 1 andrea amici 27767 Feb 13 22:47 Prog -rw-r--r-- 1 andrea amici 35594 Feb 13 22:13 Prog.c drwxr-xr-x 2 andrea amici 4096 Jan 13 00:14 cpp drwxr-xr-x 2 andrea amici 4096 Jan 13 00:14 perl drwxr-xr-x 2 andrea amici 4096 Jan 13 00:14 php drwxr-xr-x 2 andrea amici 4096 Jan 13 00:15 python
In questo caso abbiamo una directory con all'interno 4 subdirectory (cpp, perl, php, python) e due file (Programmacompilato e Programmasorgente.c). Hanno tutti come proprietario andrea e gruppo amici. Il contenuto del file e delle directory può esser visto da tutti ma solo l'utente andrea può apportare modifiche (non gli appartenenti al gruppo amici né tantomeno tutti gli altri). Inoltre tutti possono eseguire il file Programmacompilato e risalire nelle directory cpp, perl, php, python, mentre solo l'utente andrea e gli appartenenti al gruppo amici possono risalire alla directory precendente (la home di andrea, come indicato da ~/programmazione), questo perché .. , che indica la directory di livello superiore, È percorribile dall'owner dal gruppo ma non da tutti gli altri (manca infatti la x come ultimo carattere di drwxr-xr--).
Ora che abbiamo compreso come si indicano i permessi sui file e directory vediamo di scoprire come modificarli. Questo è l'argomento del prossimo articolo.