Skip to main content
Ottale
100

Guida al sistema ottale

Octal Number System

The octal system uses 8 digits: 0-7. Each octal digit represents exactly 3 binary bits. That's why 64₁₀ = 100₈. Historically used in UNIX/Linux file permissions (chmod 755 = rwxr-xr-x) and memory addressing in older 8-bit systems.

Permessi dei file in Linux

I permessi di accesso in Linux (chmod) usano tre cifre ottali: proprietario, gruppo, altri. Ogni cifra è la somma dei permessi: lettura=4, scrittura=2, esecuzione=1. Ad esempio chmod 755 = rwxr-xr-x (7=r+w+x, 5=r+x, 5=r+x). chmod 644 = rw-r--r--.

Applicazioni pratiche

File permissions: chmod 400 (read only), chmod 755 (full), chmod 600 (private). Used rarely in Python and Java. In older IBM System/360 used for disk addressing. Conversion: 64₁₀ = 100₈, 255₁₀ = 377₈.

L'ottale sopravvive perché 755 sono esattamente nove bit di permesso

L'ottale è quasi sparito dall'informatica, con un'eccezione vistosa: i permessi dei file Unix. Non è abitudine. Tre flag di permesso stanno esattamente in una cifra ottale, e tre classi di utente fanno nove bit, quindi un modo è precisamente di tre cifre, senza riempimento e senza resti.

Come funziona

  • Converte tra ottale, decimale, binario ed esadecimale.
  • Legge i modi di permesso, dove ogni cifra codifica lettura, scrittura ed esecuzione per una classe.
  • Rende visibile la corrispondenza di tre bit per cifra, che è l'intera ragione della sopravvivenza di questa notazione.
1 cifra ottale = 3 bit = 8 valori (0–7)

permessi:  r = 4,  w = 2,  x = 1
  7 = 4+2+1 = rwx      5 = 4+0+1 = r-x      6 = 4+2+0 = rw-

modo = cifra di proprietario, gruppo e altri → 9 bit, 512 modi possibili

Esempio pratico

Leggere i modi più comuni nella loro forma simbolica.

  1. 755 → rwxr-xr-x, il modo usuale di una directory o di un eseguibile
  2. 644 → rw-r--r--, il modo usuale di un file
  3. 600 → rw-------, leggibile solo dal proprietario
  4. 777 → rwxrwxrwx, scrivibile da chiunque

Ogni cifra è indipendentemente la somma di 4, 2 e 1. 755 dà tutto al proprietario e concede a gruppo e altri lettura ed esecuzione ma non scrittura: per questo è il valore predefinito per tutto ciò che va eseguito o attraversato ma non modificato.

Come leggere il risultato

  • 777 è quasi sempre un errore. Consente a qualsiasi utente del sistema di modificare il file, e vi si ricorre di solito quando un problema di permessi non è stato compreso, non perché la scrittura universale sia davvero voluta.
  • Una directory ha bisogno del permesso di esecuzione per essere attraversata. La lettura elenca i nomi, l'esecuzione dà accesso a ciò che c'è dentro. Ecco perché 644 su una directory crea la situazione confusa in cui si vedono nomi di file che non si possono aprire.
  • L'umask sottrae, non imposta. Con la comune umask 022 un file nuovo parte da 666 e diventa 644, mentre una directory nuova parte da 777 e diventa 755: è esattamente da lì che vengono quei due modi familiari.
  • Una quarta cifra iniziale attiva setuid, setgid e lo sticky bit: 4755 invece di 755. Serve di rado e va compresa prima dell'uso, perché setuid sul binario sbagliato è un rischio concreto di escalation di privilegi.

Domande frequenti

Perché ottale e non esadecimale per i permessi?
Perché i permessi vanno a gruppi di tre bit e l'ottale è esattamente tre bit per cifra. L'esadecimale spezzerebbe un gruppo di tre bit a cavallo di due cifre, e si perderebbe la corrispondenza netta di una cifra per classe.
Che cosa conviene usare davvero?
644 per i file ordinari, 755 per directory ed eseguibili, 600 per tutto ciò che contiene segreti come chiavi o credenziali. Spingiti oltre solo se sai dire con precisione quale accesso aggiuntivo stai concedendo e a chi.