Tutti i file system sono in grado di gestire i file. Per ognuno di
essi viene mantenuta una struttura dati che ne memorizza gli attributi
quali il tipo, la dimensione, il proprietario, i permessi, i tempi
di ultimo accesso e modifica ed altro. In Linux, e più in generale
in tutti i sistemi simili a UNIX
, questa struttura
fondamentale è lo
definito in
che viene riportato in figura 3.1.
Il campo
è molto importante perché descrive
il tipo di file ed i suoi permessi associati. I tre principali tipi
di file sono: file normale, directory e link
simbolico. Un directory si differenzia da un file normale perché
contiene altri file (di qualunque tipo). La caratteristica del link
simbolico è invece di referenziare indirettamente un altro file esistente
e quindi di fungere da punto di accesso ai suoi dati.
In realtà il tipo di
(
)
è una maschera di bit che sono utilizzati come interruttori. Il sistema
mette a disposizione alcune costanti dal significato intuitivo per
impostarne i valori (
)
ed alcune macro per controllarne il contenuto. Queste ultime restituiscono
un valore di verità:
Grazie al valore di
, come si è accennato, è
possibile codificare i permessi di accesso al file. La tecnica utilizzata
è la stessa della gestione dei tipi, infatti vengono messi a disposizione
nove bit di permessi per ogni file, divisi in tre categorie: utente,
gruppo e altri. I termini utente e gruppo si riferiscono al proprietario
del file (confrontando all'occorrenza i campi
e
). Avendo a disposizione i permessi di lettura,
scrittura ed esecuzione, ne segue una tabella di nove elementi, uno
per ogni bit lasciato a questa codifica.
Per maggiori dettagli sulla struttura
si consulti
il capitolo 4 di [Ste96].