Qualche nota in piu` sugli extended attributes
[gapil.git] / filedir.tex
index e4d61d0e270dbcc52b34e07609976bd41eb34748..a91b26f9d1c9635eb9633ff46efb3d743299176b 100644 (file)
@@ -525,7 +525,7 @@ sia come \itindex{pathname} \textit{pathname} assoluto che come
 \itindex{pathname} \textit{pathname} relativo.
 
 I permessi di accesso (vedi sez.~\ref{sec:file_access_control}) con cui la
-directory viene creata sono specificati dall'argomemto \param{mode}, i cui
+directory viene creata sono specificati dall'argomento \param{mode}, i cui
 possibili valori sono riportati in tab.~\ref{tab:file_permission_const}; si
 tenga presente che questi sono modificati dalla maschera di creazione dei file
 (si veda sez.~\ref{sec:file_perm_management}).  La titolarità della nuova
@@ -2558,7 +2558,7 @@ classici mantenuti negli inode.
 Per risolvere questo problema alcuni sistemi unix-like (e fra questi anche
 Linux) hanno introdotto un meccanismo generico che consenta di associare delle
 informazioni ai singoli file,\footnote{l'uso più comune è quello della ACL,
-  che tratteremo nella prossimaa sezione, ma si possono inserire anche altre
+  che tratteremo nella prossima sezione, ma si possono inserire anche altre
   informazioni.}  detto \textit{Extended Attributes}. Gli \textsl{attributi
   estesi} non sono altro che delle coppie nome/valore che sono associate
 permanentemente ad un oggetto sul filesystem, analoghi di quello che sono le
@@ -2576,6 +2576,66 @@ efficienti,\footnote{cosa molto importante, specie per le applicazioni che
   richiedono una gran numero di accessi, come le ACL.} e di garantire
 l'atomicità di tutte le operazioni.
 
+In Linux gli attributi estesi sono sempre associati al singolo inode e
+l'accesso viene sempre eseguito in forma atomica, in lettura il valore
+corrente viene scritto su un buffer in memoria, mentre la scrittura prevede
+che ogni valore precedente sia sovrascritto. L'accesso agli attributi estesi è
+regolato dagli ordinari permessi dei file: occorre il permesso di lettura per
+leggerli e quello di scrittura per scriverli o modificarli; il permesso di
+esecuzione viene invece interpretato coma la capacità di ottenere la lista
+degli attributi presenti.
+
+Si tenga presente che non tutti i filesystem supportano gli \textit{Extended
+  Attributes}, in particolare al momento della scrittura di queste dispense
+essi sono presenti solo su \textsl{ext2}, \textsl{ext3} e \textsl{XFS}.
+Inoltre a seconda della implementazione ci possono essere dei limiti sulla
+quantità di attributi che si possono utilizzare.\footnote{ad esempio nel caso
+  di \textsl{ext2} ed \textsl{ext3} è richiesto che essi siano contenuti
+  all'interno di un singolo blocco (pertanto con dimensioni massime
+  dell'ordine di 1024, 2048 o 4096 byte a seconda delle dimensioni di
+  quest'ultimo impostate in fase di formattazione), mentre con \textsl{XFS}
+  non ci sono limiti ed i dati vengono memorizzati in maniera diversa
+  (nell'inode stesso, in un blocco a parte, in una struttura ad albero
+  dedicata) per mantentere la scalabilità.} Infine lo spazio utilizzato per
+mantenere gli attributi estesi viene tenuto in conto per il calcolo delle
+quote di utente e gruppo proprietari del file.
+
+Come accennato gli \textit{Extended Attributes} costituiscono un meccanismo
+per mantenere informazioni ulteriori associate al singolo file, che possono
+avere gli usi più disparati.\footnote{come accennato sono usati per le ACL che
+  vedremo in sez.~\ref{sec:file_ACL}, ma anche per le estensioni di SELinux.}
+Per poter distinguere i vari utilizzi possibili gli attributi sono stati
+suddivisi in diverse \textsl{classi}, a cui poter applicare requisiti diversi
+per l'accesso e la gestione. Per questo motivo il nome di un attributo deve
+essere sempre specificato nella forma \texttt{namespace.attribute},
+\textit{namespace} fa riferimento alla classe a cui l'attributo appartiene; al
+momento della scrittura di queste dispense essi sono definite le seguenti
+classi:
+
+
+
+
+
+
+
+\begin{table}[htb]
+  \centering
+  \footnotesize
+  \begin{tabular}{|c|l|}
+    \hline
+    \textbf{Nome} & \textbf{Classe} \\
+    \hline
+    \hline
+    \const{security}& . \\
+    \const{system}  & . \\
+    \const{trusted} & . \\
+    \const{user}    & . \\
+    \hline
+  \end{tabular}
+  \caption{I nomi utilizzati valore di \texttt{namespace} per distinguere le
+    varue classi di \textit{Extended Attributes}.}
+  \label{tab:extended_attribute_class}
+\end{table}
 
 
 
@@ -2597,7 +2657,7 @@ le esigenze pi
 rispondere in maniera adeguata a situazioni che richiedono una gestione
 complessa dei permessi di accesso.\footnote{già un requisito come quello di
   dare accesso in scrittura ad alcune persone ed in sola lettura ad altre non
-  si può soddisfare in maniera soddifacente.}
+  si può soddisfare in maniera soddisfacente.}
 
 Per questo motivo erano state progressivamente introdotte nelle varie versioni
 di Unix dei meccanismi di gestione dei permessi dei file più flessibili, nella
@@ -2611,14 +2671,14 @@ Gli obiettivi erano per
 finanziamenti vennero ritirati senza che si fosse arrivati alla definizione di
 uno standard, dato però che una parte della documentazione prodotta era di
 alta qualità venne deciso di rilasciare al pubblico la diciassettesima bozza
-del documento, quella che va sotto il nome di POSIX 1003.1e Draft 17, che è
-divenuta la base sulla quale si definiscono quelle che vanno sotto il nome di
-\textit{Posix ACL}.
+del documento, quella che va sotto il nome di \textit{POSIX 1003.1e Draft 17},
+che è divenuta la base sulla quale si definiscono quelle che vanno sotto il
+nome di \textit{Posix ACL}.
 
 A differenza di altri sistemi (ad esempio FreeBSD) nel caso di Linux si è
 scelto di realizzare le ACL attraverso l'interfaccia degli \textit{Extended
   Attributes}, e fornire tutte le relative funzioni di gestione tramite una
-liberia, \texttt{libacl} che nasconde i dettagli implementativi delle stesse e
+libreria, \texttt{libacl} che nasconde i dettagli implementativi delle stesse e
 presenta ai programmi una interfaccia che fa riferimento allo standard POSIX
 1003.1e.
 
@@ -2757,7 +2817,7 @@ programmi e librerie) di cui il server potrebbe avere bisogno.
 % LocalWords:  gid Control List patch mandatory control execute group other all
 % LocalWords:  dell' effective passwd IGID locking swap saved text IRWXU IRWXG
 % LocalWords:  IRWXO ext reiser capability FSETID mask capabilities chroot jail
-% LocalWords:  FTP Di filter reiserfs
+% LocalWords:  FTP Di filter reiserfs Attributes Solaris Posix FreeBSD libacl
 
 %%% Local Variables: 
 %%% mode: latex