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.