Questa interpretazione delle autorizzazioni risale ai primi file system Unix. All'inizio c'erano solo file. (Bene, e dispositivi, e pipe, e ... ma sto cercando di raccontare una storia qui, non essere del 100% rigorosamente accurato; inoltre, è tutto vero per dispositivi e pipe e tutto il resto perché tutto è un file, anche directory).
Le directory sono solo file che il file system utilizza per contenere i metadati che descrivono l'albero delle directory e i file che contiene. Ogni file in una directory è stato descritto da una semplice struttura di dati che conteneva spazio per un nome file (originariamente 14 caratteri, IIRC) insieme al numero di inode in cui erano archiviati i dati, la dimensione del file, i timestamp e la parola dei permessi . Ogni directory iniziava con due voci denominate .
e ..
, la prima che puntava all'inode di questa stessa directory, e la seconda all'inode della sua directory padre.
La parola autorizzazioni aveva nove parti per descrivere il trattamento del proprietario, degli altri membri dello stesso gruppo e del mondo. I tre bit per ciascun flag indica se l'utente in questione può leggere, scrivere o eseguire il file. (Potresti notare che ci sono altri cinque bit nella parola delle autorizzazioni a 16 bit che sto ignorando. Alla fine sono stati assegnati significati ma non è rilevante per questa parte della storia.) (Inoltre, questa interpretazione dei nove i bit sono rimasti praticamente gli stessi in tutti i discendenti dei primi Unix, incluso Linux.)
Quindi, se una directory è davvero solo un tipo speciale di file e descritta da una voce in una directory, ovviamente ha anche bit di autorizzazione, e quei bit probabilmente significano qualcosa. Ma la domanda è cosa, esattamente. Il modo più semplice per assegnare significato a quei bit è di non cambiare in primo luogo ciò che significano. E questo è essenzialmente ciò che è stato fatto.
Quindi, il bit di lettura significa che l'utente può leggere la directory stessa. Ciò consente al lettore di accedere in modo classico al nome del file, ai timestamp, alle dimensioni e al numero di inode dei dati di ciascun file. In particolare, con r
set è possibile utilizzare ls
per visualizzare i nomi di tutti i file nella directory, ma ciò non è sufficiente per aprire (o utilizzare in alcun modo) uno dei file elencati.
Il bit di esecuzione indica che l'utente può "eseguire" la directory. Poiché le directory sono speciali, eseguire significa davvero cercare una voce per nome e usarla. Ciò significa che puoi provare ad aprire i file se x
è impostato, ma senza di r
te non puoi scoprire i loro nomi. Naturalmente, anche le autorizzazioni del file richiesto influiscono sull'accesso, quindi anche con x
la directory non sarai in grado di leggere un file a meno che non ti offra anche r
.
Il bit di scrittura indica che l'utente può scrivere nella directory, ma naturalmente mediato solo dal file system stesso. Ciò significa che con w
set è possibile creare nuovi file in quella directory o modificare le voci della directory dei file esistenti. Ma senza x
set, in realtà non è possibile utilizzare alcun file e senza r
di essi non è nemmeno possibile visualizzarli.
Poiché in Unix e nei suoi discendenti si sono evoluti modelli più complessi di identità utente, queste stesse descrizioni di base sono riuscite a rimanere notevolmente invariate.
In breve, r
significa che puoi vederne il contenuto, x
che puoi usarlo e w
che puoi modificarlo anche per le directory.