I permessi numerici su Linux
Sul sistema operativo Linux, e in generale su Unix, ogni file è associato a dei permessi di lettura (r), scrittura (w) ed esecuzione (x).
Un esempio pratico
-rwxrwxrwx
A parte il primo carattere che indica la tipologia del file, la stringa dei permessi è suddivisa in tre sottosequenze di caratteri che rappresentano i permessi dell'utente, del gruppo e degli altri utenti.
Nota. L'assenza del permesso è indicata con il simbolo del trattino (-) al posto della relativa lettera). Se non sono chiari questi concetti, consiglio di leggere prima l'introduzione ai permessi Linux.
Come calcolare il permesso numerico su Linux
La stessa informazione può essere rappresentata in forma numerica, sostituendo per ogni posizione il carattere (rwx) con 1 e il carattere (-) con 0.
Ad esempio, tralasciando la prima posizione, la stringa dei permessi è la seguente:
rwx rwx rwx
Posso riscrivere la stringa in modo numerico nel seguente modo:
111 111 111
Ogni componente della sequenza è un numero binario.
decimale | binario | stringa dei permessi | significato |
---|---|---|---|
0 | 000 | --- | nessun permesso |
1 | 001 | --x | esecuzione |
2 | 010 | -w- | scrittura |
3 | 011 | -wx | scrittura, esecuzione |
4 | 100 | r-- | lettura |
5 | 101 | r-x | lettura, esecuzione |
6 | 110 | rw- | lettura, scrittura |
7 | 111 | rwx | lettura, scrittura, esecuzione |
Esempio. La sequenza 111 è il numero 7 ed è il numero più alto rappresentabile in forma binaria con tre cifre.
Ora sostituisco a ogni componente il relativo numero decimale o ottale, il risultato è sempre lo stesso, ottenendo la seguente sequenza
7 7 7
Quindi, scrivere 777 oppure rwxrwxrwx è la stessa cosa.
Ho così ottenuto la rappresentazione numerica del permesso.
A che serve?
I permessi numerici su Linux sono più sintetici. Quindi, sono un modo più rapido per impostare o cambiare i permessi su un file o una directory.
Come modificare i permessi con chmod
Per cambiare i permessi di un file tramite il codice numerico, utilizzo il comando chmod ( change modality ).
Al posto della stringa dei caratteri "rwxrwxrwx" scrivo il numero 777.
chmod 777 nomefile
Il risultato finale è sempre lo stesso.
Al file sono assegnati i permessi di lettura (r), scrittura (w) ed esecuzione (x) a tutti, all'utente, al gruppo e a tutti gli altri utenti (rwxrwxrwx).
Attenzione. Per motivi di sicurezza i permessi 777 e 666 andrebbero sempre evitati, perché consentono a qualsiasi utente del sistema di modificare il contenuto del file. E' preferibile assegnare i permessi più alti tramite i gruppi.
Esempi pratici
Ecco alcuni esempi pratici di utilizzo dei permessi numerici con chmod
Chmod 700
Se volessi autorizzare soltanto l'utente alla lettura, scrittura ed esecuzione, dovrei scrivere nel seguente modo:
chmod 700 nomefile
Cmod 760
Per autorizzare anche il gruppo alla lettura e scrittura ( 110 ) devo scrivere il numero 6 nella seconda cifra.
chmod 760 nomefile
Chmod 761
Per autorizzare anche gli altri utenti soltanto alla lettura (100) devo scrivere il numero 4 nella terza cifra.
chmod 764 nomefile
Chmod 777
Per autorizzare tutti alla lettura, scrittura ed esecuzione (111) devo digitare 7 in ogni posizione.
chmod 777 nomefile
Chmod 644
Per autorizzare l'utente alla lettura e scrittura (110), il gruppo e gli altri utenti soltanto alla lettura (100) devo scrivere la modalità 644.
chmod 644 nomefile
E così via.
Ho pubblicato un elenco completo delle modalità in un'altra pagina.
Nota. Per ricordarsi le modality più frequenti, è utile memorizzare che il solo permesso di lettura (100) è 4, il solo permesso di scrittura (010) è 2 e il solo permesso di esecuzione (001) è 1.