Product SiteDocumentation Site

9.3. Gestione dei permessi

Linux è decisamente un sistema multi-utente, per cui è necessario fornire un sistema di permessi per il controllo delle operazioni autorizzate su file e directory, che comprende tutte le risorse di sistema e i device (in un sistema Unix, qualsiasi dispositivo è rappresentato da un file o directory). Questo principio è comune a tutti i sistemi Unix, ma un promemoria è sempre utile, soprattutto perché ci sono alcuni utilizzi avanzati interessanti e relativamente sconosciuti.
Ogni file o directory ha permessi specifici per tre categorie di utenti:
Si possono combinare tre tipi di diritti:
In the case of a file, these rights are easily understood: read access allows reading the content (including copying), write access allows changing it, and execute access allows you to run it (which will only work if it is a program).
Una directory è gestita in modo diverso. L'accesso in lettura dà il diritto di consultare l'elenco delle sue voci (file e directory), l'accesso in scrittura permette di creare o eliminare file, mentre l'accesso in esecuzione permette di attraversarla (soprattutto di andarvi con il comando cd). Essere in grado di attraversare una directory senza essere in grado di leggerla dà il permesso di accedere alle voci al suo interno di cui si conosce il nome, ma non di trovarle senza sapere che esistono o sotto quale nome esatto.
Tre comandi controllano i permessi associati ad un file:
Ci sono due modi di rappresentare i permessi. Tra questi, la rappresentazione simbolica è probabilmente la più facile da capire e ricordare. Utilizza i simboli lettera descritti in precedenza. È possibile definire i permessi per ogni categoria di utenti (u/g/o), impostandoli in modo esplicito (con = ), aggiungendone (+) o sottraendone (-). Così la formula u=rwx,g+rw,o-r conferisce al proprietario i permessi di lettura, scrittura ed esecuzione, aggiunge i permessi di lettura e scrittura per il gruppo proprietario, e rimuove i diritti di lettura per altri utenti. I permessi non alterati con le aggiunte o sottrazioni fatte da tale comando non vengono modificati. La lettera a, per «all» (tutti), copre tutte le tre categorie di utenti, così che a=rx garantisce a tutte e tre le categorie gli stessi diritti (lettura ed esecuzione, ma non scrittura).
La rappresentazione numerica (ottale) associa ogni permesso ad un valore: 4 per la lettura, 2 per la scrittura e 1 per l'esecuzione. Ogni combinazione di permessi viene associata con la somma delle cifre. I valori vengono quindi assegnati alle diverse categorie di utenti mettendoli in fila nell'ordine consueto (proprietario, gruppo, altri).
Ad esempio, il comando chmod 754 file imposta i seguenti permessi: lettura, scrittura ed esecuzione per il proprietario (perché 7 = 4 + 2 + 1), lettura ed esecuzione per il gruppo (perché 5 = 4 + 1), sola lettura per gli altri. Il numero 0 significa che non si hanno permessi; così chmod 600 file permette la lettura/scrittura per il proprietario, e nessun diritto per chiunque altro. Le combinazioni di permessi più frequenti sono 755 per le directory e i file eseguibili, e 644 per i file di dati.
Per rappresentare i permessi speciali, è possibile anteporre una quarta cifra a questo numero in base allo stesso principio, in cui il bit setuid, il bit setgid e lo sticky bit sono rispettivamente 4, 2 e 1. chmod 4754 assocerà il bit setuid con i permessi descritti in precedenza.
Note that the use of octal notation only allows to set all the rights at once on a file; you cannot use it to simply add a new right, such as read access for the group owner, since you must take into account the existing rights and compute the new corresponding numerical value.