Linux File Permission

Da Andreabont's Wiki.

Nei sistemi linux, così come nei sistemi UNIX, i file posseggono dei permessi di base che determinano l'accesso ad essi da parte del proprietario, degli utenti del gruppo associato al file e da tutti gli altri utenti non facente parte dei casi precedenti. Per visionare i permessi è possibile usare il comando ls.

Tipi di permessi esistenti

Permessi base

Questi permessi sono assegnabili distintamente al proprietario del file, al gruppo associato al file a tutti gli altri utenti.

Flag Cifra Comportamento sui file Comportamento sulle cartelle
r (read) 4 Il file può essere letto E' possibile visionare i file contenuti nella cartella
w (write) 2 Il file può essere scritto E possibile aggiungere, rimuovere o rinominare file dalla cartella
x (execute) 1 Il file può essere eseguito E' possibile attraversare la cartella (raggiungere sottocartelle contenute)

Permessi speciali

Questi permessi riguardano direttamente il file o la cartella.

Flag Cifra Comportamento sui file Comportamento sulle cartelle
s (suid) 4 In un eseguibile, questo sarà lanciato con il codice UID del proprietario del file ---
s (sgid) 2 In un eseguibile, questo sarà lanciato con il GID del gruppo assegnato al file Tutti i file o cartelle create avranno lo stesso gruppo della cartella madre
t (sticky) 1 --- I file contenuti dalla cartella possono essere rimossi o rinominati solo dai loro rispettivi proprietari

Gruppi di permessi

I permessi sopra visti si dividono nei seguenti gruppi, i permessi speciali formano un gruppo a sè stante:

  1. Permessi speciali
  2. Permessi relativi al proprietario del file
  3. Permessi relativi al gruppo assegnato al file
  4. Permessi relativi a tutti gli altri utenti

Rappresentazione dei permessi

I permessi possono essere rappresentati in forma simbolica o ottale, sia per la visione, che per la modifica dei permessi. La rappresentazione ottale avviene sommando ogni cifra dei permessi appartenenti allo stesso gruppo di permessi e scrivendo la cifra risultante.

Permessi base

R. ottale R. simbolica 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

Permessi speciali

I permessi speciali si sovrappongono nella rappresentazione simbolica con gli altri permessi, con la seguente logica:

  • Il permesso setuid viene segnato con una s al posto della x del 1° gruppo se sono presenti entrambi i permessi, altrimenti verrà usato S.
  • Il permesso setgid viene segnato con una s al posto della x del 2° gruppo se sono presenti entrambi i permessi, altrimenti verrà usato S.
  • Il permesso sticky viene segnato con una t al posto della x del 3° gruppo se sono presenti entrambi i permessi, altrimenti verrà usato T.
R. ottale R. 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

Esempio

R. ottale R. simbolica Permessi
0444 -r--r--r-- Solo permesso di lettura per tutti i gruppi. Nessun permesso speciale.
0700 -rwx------ Permessi di lettura, scrittura ed esecuzione solo per il proprietario, nessun permesso speciale.
0777 -rwxrwxrwx Permessi di lettura, scrittura ed esecuzione per tutti i gruppi, nessun permesso speciale.
7666 -rwSrwSrwT Permessi di lettura e scrittura per tutti i gruppi. Presenti permessi setuid, setgid e sticky.
7777 -rwsrwsrwt Permessi di lettura, scrittura ed esecuzione per tutti i gruppi. Presenti permessi setuid, setgid e sticky.