Moltissime guide tecniche o tutorial riguardanti l'installazione o l'aggiornamento di un software in hosting remoto spiegano come assegnare i permessi di files e cartelle, ma spesso lo fanno senza dare alcuna spiegazione. Da un punto di vista è un bene, perché una guida tecnica nasce con lo scopo di fornire istruzioni operative e non spiegazioni teoriche. D'altro canto questo è un rischio, perché se le istruzioni operative non possono essere eseguite alla lettera, o qualcosa va storto, l'utente potrebbe non avere gli strumenti per risolvere il problema.

Con questo articolo vogliamo fornire al lettere le poche basi teoriche che servono per capire cosa sta dietro frasi come “assegnare i permessi 755” oppure “verificare che le cartelle abbiamo i permessi 644”, le quali utilizzano la notazione ottale. Si tratta di una notazione molto semplice, che ci permetterà di prendere due piccioni con una fava: nell'apprendere la notazione ottale impareremo anche a leggere a colpo d'occhio i numeri espressi in base binaria.

Gli unici requisti necessari, prima di proseguire la lettura, sono le conoscenze base di Linux relative alla gestione degli utenti, dei gruppi e dei permessi. Chi non conoscesse l'argomento può trovare alcuni spunti qui:

Cenni teorici

La notazione ottale è semplicemente un modo abbreviato di esprimere una cifra binaria. Se non conosciamo il sistema numerico binario possiamo dare un'occhiata qui, ma i concetti sono talmente semplice che, in virtù della completezza di questo articolo, possiamo riassumerla in poche righe. Per contare in binario basta fare quello che facciamo, senza rendercene conto, quando leggiamo una cifra scritta in base decimale (il sistema numerico che usiamo tutti i giorni). Ad esempio, la cifra 125 può essere scritta come

125 = 1*100 + 2*10 + 5*1

in altre parole, sappiamo tutti che la cifra 125 è composta da 1 centinaio, 2 decine e 5 unità. Trattandosi di un sistema in base 10, in termini matematici si usa dire che i “pesi” delle varie cifre (le cifre sono i simboli 1, 2 e 5) sono, rispettivamente, 102, 101 e 100. Se non conosciamo le potenze, o non ci piace la notazione 10n, nessun problema: impariamo (come fanno tutti) a memoria la sequenza 1, 10, 100, 1000 ecc. ed il gioco è fatto. Se ci pensiamo un attimo, lo facciamo tutti i giorni, ogni volta che leggiamo una qualsiasi cifra numerica.

In binario abbiamo la stessa cosa, con un'unica differenza: la sequenza “da imparare a memoria” non è più 1, 10, 100, 1000 bensì 1, 2, 4, 8, 16 ecc... Se ci piace giocare con le potenze possiamo ricordare la sequenza come “le potenze di 2”, altrimenti va benissimo ricordarla col metodo che preferiamo.

Questo è tutto. Basta ricordare la sequenza per tradurre qualsiasi cifra binaria. Ad esempio

101 = 1*4 + 0*2 + 1*1

L'unica “stranezza”, rispetto a prima, è che dobbiamo fare la somma per capire di che numero si tratta (in questo caso 5). In realtà non c'è nulla di strano, anche prima abbiamo fatto la somma, ma senza rendercene conto, perché lo facciamo tutti i giorni. Una volta capito il meccanismo, ci accorgeremo che il sistema binario fa ormai parte della vita quotidiana. Non è un caso che le memorie RAM siano passate da 256MB a 512MB, poi ad 1024MB (1 GB) ed infine a 4096MB (4 GB): anche questi sono numeri della sequenza 1,2,4,8,16,32...

Pratica e sintassi

Per utilizzare la notazione ottale basta saper leggere e scrivere i numeri binari di 3 cifre. Consideriamo ad esempio la risorsa

-rwxrw-r-- 1 pippo adm 249 9 mag 22.13 foo.txt

in questo caso i permessi di utente, gruppo e altri (ricordiamo la sigla UGO) sono, rispettivamente: rwx (utente), rw- (gruppo) e r-- (altri). La regola è semplice: trasformiamo qualsiasi carattere (sia esso r, w o x) nella cifra “1”, mentre il trattino va letto come “0” (zero). Avremo così

Utente: rwx = 111 = 1*4 + 1*2 + 1*1 = 7

Gruppo: rw- = 110 = 1*4 + 1*2 + 0*1 = 6

Altri : r-- = 100 = 1*4 + 0*2 + 0*1 = 4

ed il gioco è fatto. I permessi della risorsa foo.txt, che in notazione simbolica si scrivono come -rwxrw-r--, in notazione ottale diventano 764.

Quali sono i vantaggi della notazione? Immaginiamo di voler cambiare i permessi del file foo.txt, per lasciare all'utente solo il permesso di lettura, togliere ogni permesso agli altri utenti, e dare tutti i permessi al gruppo proprietario. Quello che vogliamo ottenere è

r--rwx--- 1 pippo adm 249 9 mag 22.13 foo.txt

Tramite il comando chmod ci toccherebbe eseguire l'operazione in più passaggi, digitando prima chmod u-wx, poi chmod g+x ed infine chmod o-r. Oppure dovremmo ricordarci la sintassi per compiere l'operazione con un solo comando, cosa che nella pratica non succede quasi mai.

La notazione ottale permette di ottenere lo stesso risultato con un solo comando. Basta osservare che, con la regola vista sopra, la sequenza r--rwx--- si traduce nei numeri binari 100,111 e 000, ovvero 4, 7 e 0. Per settare i permessi basterà quindi digitare

chmod 470 foo.txt

Con un po' di pratica, trattandosi di maneggiare solo numeri di 3 cifre, è naturale imparare a memoria le diverse combinazioni, ad esempio: 777 sta per 111,111,111, ovvero rwxrwxrwx (tre volte rwx) che significa “tutti i permessi a tutti”. Analogamente, il permesso 000 sta per 000,000,000, ovvero --------- (9 trattini), che significa “non permettere mai alcuna operazione”.

Dopo aver svelato l'arcano dovrebbe essere facile, o addirittura divertente, capire al volo i permessi di cui si parla nei vari tutorial. Ad esempio

644 significa 110, 100, 100, ovvero rw-r--r--

755 significa 111, 101, 101, ovvero rwxr-xr-x