I permessi sui file

Una delle molte cose che differenzia un sistema Unix da windows sono i permessi e il concetto di appartenenza di un file. Ogni file nello Unix e' di proprieta' di un utente e di un gruppo. Gli utenti possiedono i file creati da
loro stessi, e quelli attribuiti all'utente dall'utente root con il comando "chown". Il gruppo di un file viene dedotto dal sistema in base al gruppo di appartenenza dell'utente, visto che un utente puo' appartenere a piu' gruppi puo' cambiare gruppo di appartenenza a un file con il comando "chgrp". Si puo' sapere a che gruppo appartenga un utente usando il comando "groups".


chown [nome_utente] [nome_file]

chgrp [nome_gruppo] [nome_file]

groups [nome_utente] 

I permessi definiscono chi puo' fare qualcosa, e che cosa puo' essere fatto con un file. Sono divisi in quattro gruppi, i primi tre di uso frequente, il quarto di uso meno frequente e piu' complesso, per cui ci limiteremo a una
sua descrizione meno approfondita. Il permesso sui gruppi definisce che cosa un utente appartenente a quel gruppo puo' fare con il file, l' universale quello che un utente non appartenente al gruppo puo' fare.
Ogni sezione della terna utente-gruppo-altri e' composto da tre bits che quindi generano tre stati di settato/non_settato, i campi indicano:

lettura -il file puo' essere letto in caso di directory e' possibile dare il comando ls nella directory viene indicato dal carattere "r".

scrittura -il file puo' essere scritto in caso di directory e' possibile creare o cancellare i file all'interno viene indicato dal carattere "w".

esecuzione -il file puo' essere mandato in esecuzione in caso di directory e' possibile usare il comando cd /nome_directory  viene indicato dal carattere "x".

La rappresentazione numerica dei permessi non e' molto difficile. Le tre categorie utente-gruppo-altri, che contengono ciascuna tre permessi, vengono considerate come una sequenza di tre cifre in formato ottale. Ogni cifra ottale corrisponde a tre cifre in binario (base 2), che sono sequenze di uno e di zero, quindi abbiamo tre gruppi di tre cifre che ci permettono di settare tutti i permessi. Dunque ogni cifra ottale ci restituisce tre cifre binarie, per esempio la cifra ottale 6 corrisponde al numero binario 110 che quindi imposta a 1 il permesso di lettura, a 1 il permesso di scrittura e a 0 quello di esecuzione. Vi riporto per comodita' la tabella:
  
base 8 (ottale) base 2 (binario)
0                                         000
1                                         001
2                                         010
3                                         011
4                                         100
5                                         101
6                                         110
7                                         111


Come appare piu' chiaro un numero ottale ha il corrispondente binario che puo'essere interpretato come una terna di valori booleani. Ci possiamo ricavare un'altra tabella:

permesso numero binario
r                     4             100
w                    2             010
x                     1             001


Dunque per determinare il numero totale da specificare per ogni elemento della terna utente-gruppo-altri bastera' sommare i valori relativi. Ultimo esempio:

proprietario rx 4+1=5
gruppo r 4
altri r 4
544 ovvero 101 100 100

digitando

chmod 544 nome_file

gli attribuiremo i seguenti permessi

r-xr--r--

E' possibile impostare, ma solo per gli eseguibili e le directory anche i bit di suid e sgid che vengono usati per modificare il comportamento standard dei permessi, ma possono causare problemi di sicurezza e meritano una discussione approfondita che va al di la' delle intenzioni di questo tutorial.