next up previous contents
Next: Chiamate di sistema implementate Up: I file system Previous: Linux ed i file   Indice


File, directory e link simbolici

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 $ ^{\textrm{TM}}$, questa struttura fondamentale è lo $ \texttt {struct stat}$ definito in $ \texttt{<sys/stat.h>}$ che viene riportato in figura 3.1.

Figura 3.1: Definizione della struttura $ \texttt {struct stat}$[Ste96] .
\includegraphics{immagini/stat.eps}

Il campo $ \texttt{st\_mode}$ è 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 $ \texttt{st\_mode}$ ( $ \texttt{mode\_t}$) è una maschera di bit che sono utilizzati come interruttori. Il sistema mette a disposizione alcune costanti dal significato intuitivo per impostarne i valori ( $ \texttt{S\_IFREG, S\_IFDIR, S\_IFLNK}$) ed alcune macro per controllarne il contenuto. Queste ultime restituiscono un valore di verità:

Esistono anche costanti e macro per gestire altri tipi di file, ma non sono interessanti per il lavoro oggetto di questa tesi.

Grazie al valore di $ \texttt{st\_mode}$, 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 $ \texttt{st\_uid}$ e $ \texttt{st\_gid}$). 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 $ \texttt {struct stat}$ si consulti il capitolo 4 di [Ste96].


Tabella 3.1: I nove bit dei permessi di accesso ai file.
maschera $ \texttt{st\_mode}$ significato $ \texttt{S\_IRUSR}$



next up previous contents
Next: Chiamate di sistema implementate Up: I file system Previous: Linux ed i file   Indice
2004-11-19