Indici e materiale sugli extended attributes.
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 30 Sep 2007 16:09:38 +0000 (16:09 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 30 Sep 2007 16:09:38 +0000 (16:09 +0000)
filedir.tex
prochand.tex

index a91b26f9d1c9635eb9633ff46efb3d743299176b..ba1cd6bf7de94f43a72c2c201be9dc5cd619e75a 100644 (file)
@@ -2579,11 +2579,7 @@ l'atomicit
 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
 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.
+che ogni valore precedente sia sovrascritto.
 
 Si tenga presente che non tutti i filesystem supportano gli \textit{Extended
   Attributes}, in particolare al momento della scrittura di queste dispense
 
 Si tenga presente che non tutti i filesystem supportano gli \textit{Extended
   Attributes}, in particolare al momento della scrittura di queste dispense
@@ -2591,53 +2587,96 @@ 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
 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:
-
-
-
-
-
-
+  all'interno di un singolo blocco (pertanto con dimensioni massime pari a
+  1024, 2048 o 4096 byte a seconda delle dimensioni di quest'ultimo impostate
+  in fase di creazione del filesystem), mentre con \textsl{XFS} non ci sono
+  limiti ed i dati vengono memorizzati in maniera diversa (nell'inode stesso,
+  in un blocco a parte, o in una struttura ad albero dedicata) per mantenerne
+  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 meccanismo per mantenere informazioni aggiuntive associate al singolo
+file, gli \textit{Extended Attributes} possono avere usi anche molto diversi
+fra loro.  Per poterli distinguere allora sono stati suddivisi in
+\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}, dove \texttt{namespace}
+fa riferimento alla classe a cui l'attributo appartiene, mentre
+\texttt{attribute} è il nome ad esso assegnato. In tale forma il nome di un
+attributo esteso deve essere univoco. Al momento della scrittura di queste
+dispense sono state definite le quattro classi di attributi riportate in
+tab.~\ref{tab:extended_attribute_class}.
 
 \begin{table}[htb]
   \centering
   \footnotesize
 
 \begin{table}[htb]
   \centering
   \footnotesize
-  \begin{tabular}{|c|l|}
+  \begin{tabular}{|c|p{10cm}|}
     \hline
     \hline
-    \textbf{Nome} & \textbf{Classe} \\
+    \textbf{Nome} & \textbf{Descrizione} \\
     \hline
     \hline
     \hline
     \hline
-    \const{security}& . \\
-    \const{system}  & . \\
-    \const{trusted} & . \\
-    \const{user}    & . \\
+    \const{security}& Gli \textit{extended security attributes}: vengono
+                      utilizzati dalle estensioni di sicurezza del kernel (i
+                      \itindex{Linux~Security~Modules} \textit{Linux 
+                        Security Modules}), per le realizzazione di meccanismi
+                      evoluti di controllo di accesso come \index{SELinux}
+                      SELinux.\\ 
+    \const{system}  & Gli \textit{extended security attributes}: sono usati
+                      dal kernel per memorizzare dati di sistema associati ai
+                      file come le \itindex{Access~Control~List} ACL (vedi
+                      sez.~\ref{sec:file_ACL}) o le \itindex{capabilities}
+                      \textit{capabilities} (vedi
+                      sez.~\ref{sec:proc_capabilities}).\\
+    \const{trusted} & I \textit{irusted extended attributes}: visibili ed
+                      accessibili soltanto a processi privilegiati.
+                      Vengono utilizzati per poter realizzare in user space
+                      meccanismi che consentano di mantenere delle
+                      informazioni sui file che non siano accessibili ai
+                      processi ordinari.\\
+    \const{user}    & Gli \textit{extended user attributes}: utilizzati per
+                      mantenere informazioni aggiuntive sui file (come il
+                      \textit{mime-type}, la codifica dei caratteri o del
+                      file) accessibili dagli utenti.\\
     \hline
   \end{tabular}
   \caption{I nomi utilizzati valore di \texttt{namespace} per distinguere le
     \hline
   \end{tabular}
   \caption{I nomi utilizzati valore di \texttt{namespace} per distinguere le
-    varue classi di \textit{Extended Attributes}.}
+    varie classi di \textit{Extended Attributes}.}
   \label{tab:extended_attribute_class}
 \end{table}
 
 
   \label{tab:extended_attribute_class}
 \end{table}
 
 
+Come accennato gli \textit{Extended Attributes} vengono utilizzati in forme
+diverse ed in particolare anche per la realizzazione di estensioni del
+meccanismo tradizionale dei controlli di accesso. Per questo motivo l'accesso
+agli attributi estesi è revolato in maniera diversa a seconda della loro
+classe; in particolare si hanno i seguenti casi:
+\begin{basedescript}{\desclabelwidth{2.0cm}\desclabelstyle{\nextlinelabel}}
+\item[\texttt{security}] l'accesso agli \textit{extended security attributes}
+  dipende dalle politiche di sicurezza stabilite da loro stessi tramite
+  l'utilizzo di un sistema di controllo basato sui
+  \itindex{Linux~Security~Modules} \textit{Linux Security Modules} (ad esempio
+  \index{SELinux} SELinux). Pertanto l'accesso in lettura o scruttura dipende
+  dalle politiche di sicurezza implementate all'interno dal modulo di
+  sicurezza che si sta utilizzando al momento (ciascuno avrà le sue). Se non è
+  stato caricato nessun modulo di sicurezza l'accesso in lettura sarà
+  consentito a tutti i processi, mentre quello in scrittura solo ai processi
+  dotati della \index{capabilities} \textit{capability}
+  \const{CAP\_SYS\_ADMIN}.
+\item[\texttt{system}] \textit{extended system attributes}
+\item[\texttt{trusted}] \textit{trusted extended attributes}
+\item[\texttt{user}] \textit{extended user attributes}
+\end{basedescript}
+
+
+ è 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.
+
+
+
 
 \itindend{Extended~Attributes}
 
 
 \itindend{Extended~Attributes}
 
@@ -2645,7 +2684,7 @@ classi:
 % sistema è nei pacchetti libxattr1-dev e attr
 
 
 % sistema è nei pacchetti libxattr1-dev e attr
 
 
-\subsection{Le ACL}
+\subsection{Le \textit{Access  Control List}}
 \label{sec:file_ACL}
 
 
 \label{sec:file_ACL}
 
 
@@ -2661,11 +2700,11 @@ complessa dei permessi di accesso.\footnote{gi
 
 Per questo motivo erano state progressivamente introdotte nelle varie versioni
 di Unix dei meccanismi di gestione dei permessi dei file più flessibili, nella
 
 Per questo motivo erano state progressivamente introdotte nelle varie versioni
 di Unix dei meccanismi di gestione dei permessi dei file più flessibili, nella
-forma delle cosiddette \textit{Access Control List}.  Nello sforzo di
-standardizzare queste funzionalità era stato creato un gruppo di lavoro il cui
-scopo era estendere lo standard POSIX 1003 attraverso due nuovi insiemi di
-specifiche, la POSIX 1003.1e per l'interfaccia di programmazione e la POSIX
-1003.2c per i comandi di shell.
+forma delle cosiddette \textit{Access Control List} (indicate usualmente con
+la sigla ACL).  Nello sforzo di standardizzare queste funzionalità era stato
+creato un gruppo di lavoro il cui scopo era estendere lo standard POSIX 1003
+attraverso due nuovi insiemi di specifiche, la POSIX 1003.1e per l'interfaccia
+di programmazione e la POSIX 1003.2c per i comandi di shell.
 
 Gli obiettivi erano però forse troppo ambizioni, e nel gennaio del 1998 i
 finanziamenti vennero ritirati senza che si fosse arrivati alla definizione di
 
 Gli obiettivi erano però forse troppo ambizioni, e nel gennaio del 1998 i
 finanziamenti vennero ritirati senza che si fosse arrivati alla definizione di
@@ -2676,11 +2715,12 @@ che 
 nome di \textit{Posix ACL}.
 
 A differenza di altri sistemi (ad esempio FreeBSD) nel caso di Linux si è
 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
-libreria, \texttt{libacl} che nasconde i dettagli implementativi delle stesse e
-presenta ai programmi una interfaccia che fa riferimento allo standard POSIX
-1003.1e.
+scelto di realizzare le ACL attraverso l'uso degli
+\itindex{Extended~Attributes} \textit{Extended Attributes} (appena trattati in
+sez.~\ref{sec:file_xattr}), e fornire tutte le relative funzioni di gestione
+tramite una libreria, \texttt{libacl} che nasconde i dettagli implementativi
+delle ACL e presenta ai programmi una interfaccia che fa riferimento allo
+standard POSIX 1003.1e.
 
 
 
 
 
 
@@ -2818,6 +2858,7 @@ programmi e librerie) di cui il server potrebbe avere bisogno.
 % 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 Attributes Solaris Posix FreeBSD libacl
 % 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 Attributes Solaris Posix FreeBSD libacl
+% LocalWords:  XFS SELinux namespace attribute security trusted Draft
 
 %%% Local Variables: 
 %%% mode: latex
 
 %%% Local Variables: 
 %%% mode: latex
index fadcf97bb6394997d9ac40fcc70af994a7aa43ab..d3e89f5984f7359f6ccd75b8b96e8b8cdfb10d7f 100644 (file)
@@ -1516,16 +1516,18 @@ Come accennato in sez.~\ref{sec:intro_multiuser} il modello base\footnote{in
   realtà già esistono estensioni di questo modello base, che lo rendono più
   flessibile e controllabile, come le \itindex{capabilities}
   \textit{capabilities} illustrate in sez.~\ref{sec:proc_capabilities}, le ACL
   realtà già esistono estensioni di questo modello base, che lo rendono più
   flessibile e controllabile, come le \itindex{capabilities}
   \textit{capabilities} illustrate in sez.~\ref{sec:proc_capabilities}, le ACL
-  per i file o il \itindex{Mandatory~Access~Control~(MAC)} \textit{Mandatory
-    Access Control} di SELinux; inoltre basandosi sul lavoro effettuato con
+  per i file (vedi sez.~\ref{sec:file_ACL}) o il
+  \itindex{Mandatory~Access~Control~(MAC)} \textit{Mandatory Access Control}
+  di \index{SELinux} SELinux; inoltre basandosi sul lavoro effettuato con
   SELinux, a partire dal kernel 2.5.x, è iniziato lo sviluppo di una
   SELinux, a partire dal kernel 2.5.x, è iniziato lo sviluppo di una
-  infrastruttura di sicurezza, il \textit{Linux Security Modules}, o LSM, in
-  grado di fornire diversi agganci a livello del kernel per modularizzare
-  tutti i possibili controlli di accesso.} di sicurezza di un sistema
-unix-like è fondato sui concetti di utente e gruppo, e sulla separazione fra
-l'amministratore (\textsl{root}, detto spesso anche \textit{superuser}) che
-non è sottoposto a restrizioni, ed il resto degli utenti, per i quali invece
-vengono effettuati i vari controlli di accesso.
+  infrastruttura di sicurezza, i \itindex{Linux~Security~Modules}
+  \textit{Linux Security Modules}, o LSM, in grado di fornire diversi agganci
+  a livello del kernel per modularizzare tutti i possibili controlli di
+  accesso.} di sicurezza di un sistema unix-like è fondato sui concetti di
+utente e gruppo, e sulla separazione fra l'amministratore (\textsl{root},
+detto spesso anche \textit{superuser}) che non è sottoposto a restrizioni, ed
+il resto degli utenti, per i quali invece vengono effettuati i vari controlli
+di accesso.
 
 Abbiamo già accennato come il sistema associ ad ogni utente e gruppo due
 identificatori univoci, lo user-ID ed il group-ID; questi servono al kernel per
 
 Abbiamo già accennato come il sistema associ ad ogni utente e gruppo due
 identificatori univoci, lo user-ID ed il group-ID; questi servono al kernel per
@@ -2109,12 +2111,12 @@ eseguibili,\footnote{una descrizione sommaria di questa funzionalit
   ma non essendo implementata non ne tratteremo qui.} in modo da poter
 stabilire quali capacità possono essere utilizzate quando viene messo in
 esecuzione uno specifico programma; attualmente però questa funzionalità non è
   ma non essendo implementata non ne tratteremo qui.} in modo da poter
 stabilire quali capacità possono essere utilizzate quando viene messo in
 esecuzione uno specifico programma; attualmente però questa funzionalità non è
-implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
-  finora non è disponibile al momento neanche presente nessuna realizzazione
-  sperimentale delle specifiche POSIX.1e, anche se esistono dei patch di
-  sicurezza del kernel, come LIDS (vedi
-  \href{http://www.lids.org}{\texttt{http://www.lids.org/})} che realizzano
-  qualcosa di simile.}
+implementata.\footnote{per attualmente si intende fino al kernel 2.6.23;
+  benché l'infrastruttura per crearla sia presente (vedi anche
+  sez.~\ref{sec:file_xattr}) finora non è disponibile nessuna realizzazione
+  delle specifiche POSIX.1e, esistono però dei patch di sicurezza del kernel,
+  come LIDS (vedi \href{http://www.lids.org}{\texttt{http://www.lids.org/})}
+  che realizzano qualcosa di simile.}
 
 
 \begin{table}[!h!bt]
 
 
 \begin{table}[!h!bt]