I permessi, in informatica, indicano le autorizzazioni per l'accesso a file e directory del file system del sistema da parte dei vari utenti in un sistema operativo multiutente.

I sistemi di tipo Unix e Unix-like, essendo stati tra i primi sistemi multiutente, possiedono un proprio meccanismo tradizionale di permessi memorizzati nel file system, tipicamente assegnato/modificato da un amministratore di sistema.

Permessi tradizionali Unix

[modifica | modifica wikitesto]

Nei sistemi Unix e Unix-like vi sono dei permessi di base o attributi per file e directory che sono applicabili a tre classi distinte, dette utente (o proprietario), gruppo e altri. Vi sono poi ulteriori permessi che si applicano globalmente al file o alla directory.

Questi permessi sono associati all'inode che rappresenta i dati del file o della directory, e non al nome del file, per cui due o più collegamenti fisici allo stesso inode avranno necessariamente gli stessi permessi, anche se collocati in directory diverse.

Classi

[modifica | modifica wikitesto]

Gli utenti di ciascun file directory appartengono a tre classi utente: esse sono dette proprietario, gruppo di appartenenza e altri. Pertanto, ad ogni file o cartella è possibile associare i diversi permessi di base (scrittura, lettura, esecuzione) relativamente a ciascuna di queste tre classi di utenti:

I permessi ulteriori sono applicati indipendentemente dalla classe.

Con il comando ls -l <percorso/nome_file> riepilogando ad esempio si possono ottenere le seguenti informazioni sui permessi:

Permessi di base

[modifica | modifica wikitesto]

I permessi di base, che si applicano ai file e cartelle nell'ambito delle tre classi utente sopra elencate, sono:

Altri permessi

[modifica | modifica wikitesto]

Oltre ai permessi di base i sistemi Unix hanno altri tre permessi che si applicano globalmente al file o directory, in maniera indipendente dalla classe:

Permessi dei collegamenti simbolici

[modifica | modifica wikitesto]

I collegamenti simbolici non hanno mai permessi propri, essendo solo riferimenti per nome ad un altro file, e a tutti gli effetti si può considerare che abbiano i permessi del file o della directory a cui si riferiscono.

È al limite possibile, in alcuni sistemi, dare opzioni per il cambiamento ricorsivo dei permessi seguendo anche i collegamenti simbolici.

Rappresentazione dei permessi

[modifica | modifica wikitesto]

Esistono due rappresentazioni dei permessi sopra descritti: una simbolica ed una ottale.

Rappresentazione simbolica

[modifica | modifica wikitesto]

Si tratta della rappresentazione usata dal comando ls -l, e consiste in una serie di 10 caratteri.

Il primo carattere indica il tipo di file o directory elencata, e non rappresenta propriamente un permesso:

Ad esso seguono tre serie di tre caratteri ciascuna. Ogni serie rappresenta una classe di permessi, rispettivamente per il proprietario, per il gruppo e per gli altri:

Gli altri permessi sono rappresentati con delle varianti all'interno delle tre classi, sebbene essi non siano applicabili per classe:

Esempi

[modifica | modifica wikitesto]

Rappresentazione ottale

[modifica | modifica wikitesto]

La rappresentazione ottale dei permessi consiste in un numero di quattro cifre in base otto (da 0 a 7). Tutte le cifre eccetto l'ultima possono essere omesse, e si considerano pari a zero. Ad esempio "750" equivale a "0750", mentre "5" equivale a "0005".

L'ultima cifra rappresenta la classe di permessi per gli altri, la penultima cifra la classe di permessi per il gruppo, la terzultima cifra rappresenta la classe di permessi per il proprietario, e la quartultima cifra rappresenta gli altri permessi. Solitamente si specificano numeri di tre o quattro cifre.

Ai permessi di lettura, scrittura ed esecuzione sono assegnati dei numeri:

e la somma dei permessi abilitati denota la cifra da usare per la particolare classe di permessi (ultima, penultima e terzultima cifra), ovvero:

Cifra simboli Permessi
0 --- nessun permesso
1 --x esecuzione
2 -w- scrittura
3 -wx scrittura ed esecuzione
4 r-- lettura
5 r-x lettura ed esecuzione
6 rw- lettura e scrittura
7 rwx lettura, scrittura, esecuzione

Anche agli altri permessi viene assegnato un numero:

e anche qui la somma dei permessi abilitati denota la quartultima cifra.

Cifra Rappresentazione simbolica Permessi
0 nessun ulteriore permesso
1 --------t sticky
2 -----s--- set group ID
3 -----s--t sticky e set group ID
4 --s------ set user ID
5 --s-----t set user ID e sticky
6 --s--s--- set user ID e set group ID
7 --s--s--t set user ID, set group ID e sticky

Da notare che i numeri derivano dalla notazione binaria, in cui ad ogni permesso corrisponde un singolo bit (per un totale di 12 bit), che è impostato a 1 se il permesso è concesso oppure a 0 se è negato.

Altri permessi Permessi
proprietario gruppo altri
set user ID set group ID sticky lettura scrittura esecuzione lettura scrittura esecuzione lettura scrittura esecuzione
Bit 12 11 10 9 8 7 6 5 4 3 2 1
Cifre ottali N Permessi N Permessi N Permessi N Permessi
0 nessun permesso 0 nessun permesso 0 nessun permesso 0 nessun permesso
1 sticky 1 esecuzione 1 esecuzione 1 esecuzione
2 set group ID 2 scrittura 2 scrittura 2 scrittura
3 set group ID e sticky 3 scrittura ed esecuzione 3 scrittura ed esecuzione 3 scrittura ed esecuzione
4 set user ID 4 lettura 4 lettura 4 lettura
5 set user ID e sticky 5 lettura ed esecuzione 5 lettura ed esecuzione 5 lettura ed esecuzione
6 set user ID e set group ID 6 lettura e scrittura 6 lettura e scrittura 6 lettura e scrittura
7 set user ID, set group ID e sticky 7 lettura, scrittura, esecuzione 7 lettura, scrittura, esecuzione 7 lettura, scrittura, esecuzione

Ad esempio un permesso 755 (in binario 000111101101) imposta lettura, scrittura ed esecuzione (7) per il proprietario (prima cifra), e lettura ed esecuzione (i due 5) per gruppo (seconda cifra) ed altri (terza cifra).

In certa documentazione[1] è possibile siano specificate cinque cifre, la prima delle quali è però sempre zero, secondo la convenzione del linguaggio C per cui un numero ottale va indicato precedendolo da uno zero.

Esempi

[modifica | modifica wikitesto]

Permessi per file system non Unix

[modifica | modifica wikitesto]

Con l'andare del tempo i vari sistemi Unix e Unix-like hanno gradualmente acquisito la possibilità di accedere a file system che non hanno un supporto nativo per lo schema di permessi sopra descritto.

In alcuni casi è stato possibile progettare delle estensioni al file system in modo da poter offrire anche questo tipo di supporto in maniera trasparente, come ad esempio nel caso delle estensioni Rock Ridge per il file system ISO 9660.

In molti altri casi, come ad esempio per i file system di tipo FAT e NTFS, si è ricorso ad una assegnazione di permessi, proprietario e gruppo secondo delle regole generalizzate che valgono per tutti i file e directory contenute, e che non sono memorizzate nel file system stesso. In casi come questi non è tipicamente possibile modificare individualmente i permessi di singoli file e directory.

Note

[modifica | modifica wikitesto]
  1. ^ (EN) Solaris 10 chmod(2) man page[collegamento interrotto]

Bibliografia

[modifica | modifica wikitesto]

Voci correlate

[modifica | modifica wikitesto]
  Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di sicurezza informatica