Inizio revisione capitolo 6.
[gapil.git] / filedir.tex
index 050dcf7a5866dd51b2e7a4630a24387a737df041..b88d34bbd1368b659d8c30ab7ab4b57cd59596f5 100644 (file)
@@ -78,7 +78,7 @@ verrà inserita nella tabella, ed il nuovo filesystem comparirà in
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.80\textwidth}
     \includestruct{listati/file_system_type.h}
   \end{minipage}
   \normalsize 
@@ -178,7 +178,7 @@ struttura viene allocata e trascritti all'indietro se modificati.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/inode.h}
   \end{minipage}
   \normalsize 
@@ -213,7 +213,7 @@ tab.~\ref{tab:file_inode_operations} le più rilevanti.
     \hline
     \hline
     \textsl{\code{create}} & Chiamata per creare un nuovo file (vedi
-                             sez.~\ref{sec:file_open}).\\ 
+                             sez.~\ref{sec:file_open_close}).\\ 
     \textsl{\code{link}}   & Crea un \textit{hard link} (vedi
                              sez.~\ref{sec:link_symlink_rename}).\\
     \textsl{\code{unlink}} & Cancella un \textit{hard link} (vedi
@@ -260,13 +260,13 @@ tab.~\ref{tab:file_file_operations}.\footnote{essa può essere comunque
   detta funzione.} Questo avviene perché su Linux l'apertura di un file
 richiede comunque un'altra operazione che mette in gioco l'omonimo oggetto del
 VFS: l'allocazione di una struttura di tipo \kstruct{file} che viene associata
-ad ogni file aperto nel sistema.
-
-I motivi per cui viene usata una struttura a parte sono diversi, anzitutto,
-come illustrato in sez.~\ref{sec:file_fd}, questa è necessaria per le
-operazioni eseguite dai processi con l'interfaccia dei file descriptor; ogni
-processo infatti mantiene il riferimento ad una struttura \kstruct{file} per
-ogni file che ha aperto, ed è tramite essa che esegue le operazioni di I/O.
+ad ogni file aperto nel sistema.  I motivi per cui viene usata una struttura a
+parte sono diversi, anzitutto, come illustrato in sez.~\ref{sec:file_fd},
+questa è necessaria per le operazioni eseguite dai processi con l'interfaccia
+dei file descriptor. Ogni processo infatti mantiene il riferimento ad una
+struttura \kstruct{file} per ogni file che ha aperto, ed è tramite essa che
+esegue le operazioni di I/O. Inoltre il kernel mantiene un elenco di tutti i
+file aperti nella \itindex{file~table} \textit{file table}.
 
 Inoltre se le operazioni relative agli \textit{inode} fanno riferimento ad
 oggetti posti all'interno di un filesystem e vi si applicano quindi le
@@ -279,7 +279,7 @@ di dati) dovrà invece ricorrere a quelle fornite dal driver del dispositivo.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/file.h}
   \end{minipage}
   \normalsize 
@@ -304,14 +304,15 @@ tab.~\ref{tab:file_file_operations} le più significative.
     \textbf{Funzione} & \textbf{Operazione} \\
     \hline
     \hline
-    \textsl{\code{open}}   & Apre il file (vedi sez.~\ref{sec:file_open}).\\
+    \textsl{\code{open}}   & Apre il file (vedi
+                             sez.~\ref{sec:file_open_close}).\\ 
     \textsl{\code{read}}   & Legge dal file (vedi sez.~\ref{sec:file_read}).\\
     \textsl{\code{write}}  & Scrive sul file (vedi 
                              sez.~\ref{sec:file_write}).\\
     \textsl{\code{llseek}} & Sposta la posizione corrente sul file (vedi
                              sez.~\ref{sec:file_lseek}).\\
     \textsl{\code{ioctl}}  & Accede alle operazioni di controllo 
-                             (vedi sez.~\ref{sec:file_ioctl}).\\
+                             (vedi sez.~\ref{sec:file_fcntl_ioctl}).\\
     \textsl{\code{readdir}}& Legge il contenuto di una directory (vedi 
                              sez.~\ref{sec:file_dir_read}).\\
     \textsl{\code{poll}}   & Usata nell'I/O multiplexing (vedi
@@ -812,7 +813,7 @@ nell'elenco seguente:
   tutte le directory del filesystem, ma su alcuni filesystem è possibile
   impostarla a livello di singole directory o per i sottorami di una directory
   con il comando \cmd{chattr}.\footnote{questo avviene tramite delle opportune
-    \texttt{ioctl} (vedi sez.~\ref{sec:file_ioctl}).}
+    \texttt{ioctl} (vedi sez.~\ref{sec:file_fcntl_ioctl}).}
 
   Questo consente di ridurre al minimo il rischio di perdita dei dati delle
   directory in caso di crollo improvviso del sistema, al costo di una certa
@@ -1031,7 +1032,7 @@ nell'elenco seguente:
 \item[\const{MS\_SYNCHRONOUS}] Abilita la scrittura sincrona richiedendo che
   ogni modifica al contenuto del filesystem venga immediatamente registrata su
   disco. Lo stesso comportamento può essere ottenuto con il flag
-  \const{O\_SYNC} di \func{open} (vedi sez.~\ref{sec:file_open}).
+  \const{O\_SYNC} di \func{open} (vedi sez.~\ref{sec:file_open_close}).
 
   Questa opzione consente di ridurre al minimo il rischio di perdita dei dati
   in caso di crollo improvviso del sistema, al costo di una pesante perdita di
@@ -1095,7 +1096,7 @@ prototipo è:
 \end{funcproto}
 
 \footnotetext{più precisamente la \itindex{capabilities} capacità
-  \const{CAP\_SYS\_ADMIN}.}
+  \const{CAP\_SYS\_ADMIN}, vedi sez.~\ref{sec:proc_capabilities}.}
 
 La funzione prende il nome della directory su cui il filesystem è montato e
 non il file o il dispositivo che è stato montato,\footnote{questo è vero a
@@ -1152,18 +1153,18 @@ eseguita una sincronizzazione dei dati.
     \textbf{Costante} & \textbf{Descrizione}\\
     \hline
     \hline
-    \const{MNT\_FORCE}  & forza lo smontaggio del filesystem anche se questo è
+    \const{MNT\_FORCE}  & Forza lo smontaggio del filesystem anche se questo è
                           occupato (presente dai kernel della serie 2.2).\\
-    \const{MNT\_DETACH} & esegue uno smontaggio ``\textsl{pigro}'', in cui si
+    \const{MNT\_DETACH} & Esegue uno smontaggio ``\textsl{pigro}'', in cui si
                           blocca l'accesso ma si aspetta che il filesystem si
                           liberi (presente dal kernel 2.4.11 e dalla
                           \acr{glibc} 2.11).\\ 
-    \const{MNT\_EXPIRE} & se non occupato marca un \itindex{mount~point} 
+    \const{MNT\_EXPIRE} & Se non occupato marca un \itindex{mount~point} 
                           \textit{mount point} come ``\textsl{in scadenza}'' in
                           modo che ad una successiva chiamata senza utilizzo
                           del filesystem questo venga smontato (presente dal
                           kernel 2.6.8 e dalla \acr{glibc} 2.11).\\ 
-    \const{UMOUNT\_NOFOLLOW}& non dereferenzia \param{target} se questo è un
+    \const{UMOUNT\_NOFOLLOW}& Non dereferenzia \param{target} se questo è un
                           collegamento simbolico (vedi
                           sez.~\ref{sec:link_symlink_rename}) evitando
                           problemi di sicurezza (presente dal kernel 2.6.34).\\ 
@@ -1243,7 +1244,7 @@ del filesystem stesso.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/statfs.h}
   \end{minipage}
   \normalsize 
@@ -1546,8 +1547,8 @@ Si noti che non si è specificato il comportamento delle funzioni che operano
 con i file descriptor (che tratteremo nel prossimo capitolo), in quanto la
 risoluzione del collegamento simbolico viene in genere effettuata dalla
 funzione che restituisce il file descriptor (normalmente la \func{open}, vedi
-sez.~\ref{sec:file_open}) e tutte le operazioni seguenti fanno riferimento
-solo a quest'ultimo.
+sez.~\ref{sec:file_open_close}) e tutte le operazioni seguenti fanno
+riferimento solo a quest'ultimo.
 
 Dato che, come indicato in tab.~\ref{tab:file_symb_effect}, funzioni come la
 \func{open} seguono i collegamenti simbolici, occorrono funzioni apposite per
@@ -1722,7 +1723,7 @@ sono stati cancellati: solo quando il numero di collegamenti mantenuto
 lo spazio occupato su disco viene liberato. Si tenga presente comunque che a
 questo si aggiunge sempre un'ulteriore condizione e cioè che non ci siano
 processi che abbiano il suddetto file aperto.\footnote{come vedremo in
-  cap.~\ref{cha:file_unix_interface} il kernel mantiene anche una tabella dei
+  sez.~\ref{sec:file_unix_interface} il kernel mantiene anche una tabella dei
   file aperti nei vari processi, che a sua volta contiene i riferimenti agli
   \itindex{inode} \textit{inode} ad essi relativi; prima di procedere alla
   cancellazione dello spazio occupato su disco dal contenuto di un file il
@@ -1988,11 +1989,12 @@ con le usuali funzioni di scrittura.
 Ma se la scrittura e l'aggiornamento dei dati delle directory è compito del
 kernel, sono molte le situazioni in cui i processi necessitano di poterne
 leggere il contenuto. Benché questo possa essere fatto direttamente (vedremo
-in sez.~\ref{sec:file_open} che è possibile aprire una directory come se fosse
-un file, anche se solo in sola lettura) in generale il formato con cui esse
-sono scritte può dipendere dal tipo di filesystem, tanto che, come riportato
-in tab.~\ref{tab:file_file_operations}, il \itindex{Virtual~File~System} VFS
-prevede una apposita funzione per la lettura delle directory.
+in sez.~\ref{sec:file_open_close} che è possibile aprire una directory come se
+fosse un file, anche se solo in sola lettura) in generale il formato con cui
+esse sono scritte può dipendere dal tipo di filesystem, tanto che, come
+riportato in tab.~\ref{tab:file_file_operations}, il
+\itindex{Virtual~File~System} VFS prevede una apposita funzione per la lettura
+delle directory.
 
 \itindbeg{directory~stream}
 
@@ -2001,7 +2003,7 @@ Tutto questo si riflette nello standard POSIX\footnote{le funzioni erano
 che ha introdotto una apposita interfaccia per la lettura delle directory,
 basata sui cosiddetti \textit{directory stream}, chiamati così per l'analogia
 con i \textit{file stream} dell'interfaccia standard ANSI C che vedremo in
-cap.~\ref{cha:files_std_interface}. La prima funzione di questa interfaccia è
+sez.~\ref{sec:files_std_interface}. La prima funzione di questa interfaccia è
 \funcd{opendir}, il cui prototipo è:
 
 \begin{funcproto}{
@@ -2166,7 +2168,7 @@ restituito il valore \val{NULL}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/dirent.c}
   \end{minipage} 
   \normalsize 
@@ -2224,8 +2226,8 @@ Ottenuta allora con \code{offsetof(struct dirent, d\_name)} la dimensione
 della parte iniziale della struttura, basterà sommarci la dimensione massima
 dei nomi dei file nel filesystem che si sta usando, che si può ottenere
 attraverso la funzione \func{pathconf} (per la quale si rimanda a
-sez.~\ref{sec:sys_pathconf}) più un ulteriore carattere per la terminazione
-della stringa. 
+sez.~\ref{sec:sys_file_limits}) più un ulteriore carattere per la terminazione
+della stringa.
 
 Per quanto riguarda il significato dei campi opzionali, il campo \var{d\_type}
 indica il tipo di file (se fifo, directory, collegamento simbolico, ecc.), e
@@ -3012,8 +3014,8 @@ prototipo è:
 Come per \func{mktemp} anche in questo caso \param{template} non può essere
 una stringa costante. La funzione apre un file in lettura/scrittura con la
 funzione \func{open}, usando l'opzione \const{O\_EXCL} (si veda
-sez.~\ref{sec:file_open}), in questo modo al ritorno della funzione si ha la
-certezza di essere stati i creatori del file, i cui permessi (si veda
+sez.~\ref{sec:file_open_close}), in questo modo al ritorno della funzione si
+ha la certezza di essere stati i creatori del file, i cui permessi (si veda
 sez.~\ref{sec:file_perm_overview}) sono impostati al valore \code{0600}
 (lettura e scrittura solo per il proprietario).\footnote{questo è vero a
   partire dalla \acr{glibc} 2.0.7, le versioni precedenti della \acr{glibc} e
@@ -3057,11 +3059,11 @@ In OpenBSD è stata introdotta un'altra funzione simile alle precedenti,
   più gli altri eventuali codici di errore di \func{mkdir}.}
 \end{funcproto}
 
-La funzione genera una directory il cui nome è ottenuto sostituendo le
-\code{XXXXXX} finali di \param{template} con permessi \code{0700} (al solito
-si veda cap.~\ref{cha:file_unix_interface} per i dettagli). Dato che la
-creazione della directory è sempre esclusiva i precedenti problemi di
-\itindex{race~condition} \textit{race condition} non si pongono.
+La funzione crea una directory temporanea il cui nome è ottenuto sostituendo
+le \code{XXXXXX} finali di \param{template} con permessi \code{0700} (si veda
+sez.~\ref{sec:file_perm_overview} per i dettagli). Dato che la creazione della
+directory è sempre esclusiva i precedenti problemi di \itindex{race~condition}
+\textit{race condition} non si pongono.
 
 
 
@@ -3132,7 +3134,7 @@ sez.~\ref{sec:file_file_times}).
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/stat.h}
   \end{minipage} 
   \normalsize 
@@ -3149,7 +3151,7 @@ introdotti per rendersi indipendenti dalla piattaforma.
 
 Benché la descrizione dei commenti di fig.~\ref{fig:file_stat_struct} sia
 abbastanza chiara, vale la pena illustrare maggiormente il significato dei
-campi di \structd{stat} su cui non torneremo in maggior dettaglio nel resto di
+campi di \struct{stat} su cui non torneremo in maggior dettaglio nel resto di
 questa sezione:
 \begin{itemize*}
 
@@ -3209,13 +3211,13 @@ tipo di file in maniera standardizzata.
     \textbf{Macro} & \textbf{Tipo del file} \\
     \hline
     \hline
-    \macro{S\_ISREG}\texttt{(m)}  & file normale.\\
-    \macro{S\_ISDIR}\texttt{(m)}  & directory.\\
-    \macro{S\_ISCHR}\texttt{(m)}  & dispositivo a caratteri.\\
-    \macro{S\_ISBLK}\texttt{(m)}  & dispositivo a blocchi.\\
-    \macro{S\_ISFIFO}\texttt{(m)} & fifo.\\
-    \macro{S\_ISLNK}\texttt{(m)}  & collegamento simbolico.\\
-    \macro{S\_ISSOCK}\texttt{(m)} & socket.\\
+    \macro{S\_ISREG}\texttt{(m)}  & File normale.\\
+    \macro{S\_ISDIR}\texttt{(m)}  & Directory.\\
+    \macro{S\_ISCHR}\texttt{(m)}  & Dispositivo a caratteri.\\
+    \macro{S\_ISBLK}\texttt{(m)}  & Dispositivo a blocchi.\\
+    \macro{S\_ISFIFO}\texttt{(m)} & Fifo.\\
+    \macro{S\_ISLNK}\texttt{(m)}  & Collegamento simbolico.\\
+    \macro{S\_ISSOCK}\texttt{(m)} & Socket.\\
     \hline    
   \end{tabular}
   \caption{Macro per i tipi di file (definite in \headfile{sys/stat.h}).}
@@ -3248,9 +3250,11 @@ come argomento il valore di \var{st\_mode}.
     \const{S\_IFCHR}  &  0020000 & Dispositivo a caratteri.\\
     \const{S\_IFIFO}  &  0010000 & Fifo.\\
     \hline
-    \const{S\_ISUID}  &  0004000 & \itindex{suid~bit} \acr{suid} bit.\\
-    \const{S\_ISGID}  &  0002000 & \itindex{sgid~bit} \acr{sgid} bit.\\
-    \const{S\_ISVTX}  &  0001000 & \itindex{sticky~bit} \acr{sticky} bit.\\
+    \const{S\_ISUID}  &  0004000 & Set user ID \itindex{suid~bit} (\acr{suid})
+                                   bit.\\ 
+    \const{S\_ISGID}  &  0002000 & Set group ID \itindex{sgid~bit}
+                                   (\acr{sgid}) bit.\\
+    \const{S\_ISVTX}  &  0001000 & \itindex{sticky~bit} \acr{Sticky} bit.\\
     \hline
     \const{S\_IRWXU}  &  00700   & Maschera per i permessi del proprietario.\\
     \const{S\_IRUSR}  &  00400   & Il proprietario ha permesso di lettura.\\
@@ -3628,7 +3632,7 @@ puntatore nullo verrà impostato il tempo corrente.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/utimbuf.h}
   \end{minipage} 
   \normalsize 
@@ -3643,9 +3647,9 @@ tempo corrente ed è sufficiente avere accesso in scrittura al file o essere
 proprietari del file o avere i privilegi di amministratore. Se invece si è
 specificato un valore diverso la funzione avrà successo solo se si è
 proprietari del file o se si hanno i privilegi di amministratore.\footnote{per
-  essere precisi la \itindex{capabilities} capacità \const{CAP\_FOWNER}.} In
-entrambi i casi per verificare la proprietà del file viene utilizzato
-l'\ids{UID} effettivo del processo.
+  essere precisi la \itindex{capabilities} capacità \const{CAP\_FOWNER}, vedi
+  sez.~\ref{sec:proc_capabilities}.} In entrambi i casi per verificare la
+proprietà del file viene utilizzato l'\ids{UID} effettivo del processo.
 
 Si tenga presente che non è possibile modificare manualmente il tempo di
 cambiamento di stato del file, che viene aggiornato direttamente dal kernel
@@ -3694,7 +3698,7 @@ puntatore nullo di nuovo verrà utilizzato il tempo corrente.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/timeval.h}
   \end{minipage} 
   \normalsize 
@@ -3787,7 +3791,7 @@ un valore dei tempi con una precisione fino al nanosecondo.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/timespec.h}
   \end{minipage} 
   \normalsize 
@@ -3984,7 +3988,7 @@ crearlo o rinominarlo o cancellarlo invece occorrerà avere anche il permesso
 di scrittura per la directory.
 
 Avere il permesso di lettura per un file consente di aprirlo con le opzioni
-(si veda quanto riportato in tab.~\ref{tab:file_open_flags}) di sola lettura o
+(si veda quanto riportato in sez.~\ref{sec:file_open_close}) di sola lettura o
 di lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura
 consente di aprire un file in sola scrittura o lettura/scrittura e modificarne
 il contenuto, lo stesso permesso è necessario per poter troncare il file o per
@@ -4109,9 +4113,10 @@ Entrambi questi attributi attivano queste restrizioni a livello di filesystem,
 per cui a differenza dei permessi ordinari esse varranno per qualunque utente
 compreso l'amministratore. L'amministratore è l'unico che può attivare o
 disattivare questi attributi,\footnote{più precisamente un processo con la
-  \itindex{capabilities} capacità \const{CAP\_LINUX\_IMMUTABLE}.} e potendo
-rimuoverli è comunque capace di tornare in grado di eseguire qualunque
-operazione su un file immutabile o \textit{append-only}.
+  \itindex{capabilities} capacità \const{CAP\_LINUX\_IMMUTABLE}, vedi
+  sez.~\ref{sec:proc_capabilities}.} e potendo rimuoverli è comunque capace di
+tornare in grado di eseguire qualunque operazione su un file immutabile o
+\textit{append-only}.
 
 \itindend{file~attributes}
 
@@ -4384,9 +4389,9 @@ file.
     \textbf{\param{mode}} & \textbf{Valore} & \textbf{Significato} \\
     \hline
     \hline
-    \const{S\_ISUID} & 04000 & Set user ID \itindex{suid~bit}.\\
-    \const{S\_ISGID} & 02000 & Set group ID \itindex{sgid~bit}.\\
-    \const{S\_ISVTX} & 01000 & Sticky bit \itindex{sticky~bit}.\\
+    \const{S\_ISUID} & 04000 & Set user ID \itindex{suid~bit} bit.\\
+    \const{S\_ISGID} & 02000 & Set group ID \itindex{sgid~bit} bit.\\
+    \const{S\_ISVTX} & 01000 & Sticky \itindex{sticky~bit} bit.\\
     \hline
     \const{S\_IRWXU} & 00700 & L'utente ha tutti i permessi.\\
     \const{S\_IRUSR} & 00400 & L'utente ha il permesso di lettura.\\
@@ -4465,11 +4470,11 @@ un'eventuale modifica comporterà la perdita di questo privilegio.
 Le funzioni \func{chmod} e \func{fchmod} ci permettono di modificare i
 permessi di un file, resta però il problema di quali sono i permessi assegnati
 quando il file viene creato. Le funzioni dell'interfaccia nativa di Unix, come
-vedremo in sez.~\ref{sec:file_open}, permettono di indicare esplicitamente i
-permessi di creazione di un file, ma questo non è possibile per le funzioni
-dell'interfaccia standard ANSI C che non prevede l'esistenza di utenti e
-gruppi, ed inoltre il problema si pone anche per l'interfaccia nativa quando i
-permessi non vengono indicati esplicitamente. 
+vedremo in sez.~\ref{sec:file_open_close}, permettono di indicare
+esplicitamente i permessi di creazione di un file, ma questo non è possibile
+per le funzioni dell'interfaccia standard ANSI C che non prevede l'esistenza
+di utenti e gruppi, ed inoltre il problema si pone anche per l'interfaccia
+nativa quando i permessi non vengono indicati esplicitamente.
 
 \itindbeg{umask} 
 
@@ -4517,7 +4522,7 @@ utenti non hanno motivi per modificarlo.
 \subsection{La gestione della titolarità dei file}
 \label{sec:file_ownership_management}
 
-Vedremo in sez.~\ref{sec:file_base_func} con quali funzioni si possono creare
+Vedremo in sez.~\ref{sec:file_open_close} con quali funzioni si possono creare
 nuovi file, in tale occasione vedremo che è possibile specificare in sede di
 creazione quali permessi applicare ad un file, però non si può indicare a
 quale utente e gruppo esso deve appartenere.  Lo stesso problema si presenta
@@ -5198,21 +5203,21 @@ la capacità \itindex{capabilities} \const{CAP\_FOWNER}.
     \textbf{Tipo} & \textbf{Descrizione} \\
     \hline
     \hline
-    \const{ACL\_USER\_OBJ} & voce che contiene i diritti di accesso del
+    \const{ACL\_USER\_OBJ} & Voce che contiene i diritti di accesso del
                              proprietario del file.\\
-    \const{ACL\_USER}      & voce che contiene i diritti di accesso per
+    \const{ACL\_USER}      & Voce che contiene i diritti di accesso per
                              l'utente indicato dal rispettivo
                              qualificatore.\\  
-    \const{ACL\_GROUP\_OBJ}& voce che contiene i diritti di accesso del
+    \const{ACL\_GROUP\_OBJ}& Voce che contiene i diritti di accesso del
                              gruppo proprietario del file.\\
-    \const{ACL\_GROUP}     & voce che contiene i diritti di accesso per
+    \const{ACL\_GROUP}     & Voce che contiene i diritti di accesso per
                              il gruppo indicato dal rispettivo
                              qualificatore.\\
-    \const{ACL\_MASK}      & voce che contiene la maschera dei massimi
+    \const{ACL\_MASK}      & Voce che contiene la maschera dei massimi
                              permessi di accesso che possono essere garantiti
                              da voci del tipo \const{ACL\_USER},
                              \const{ACL\_GROUP} e \const{ACL\_GROUP\_OBJ}.\\
-    \const{ACL\_OTHER}     & voce che contiene i diritti di accesso di chi
+    \const{ACL\_OTHER}     & Voce che contiene i diritti di accesso di chi
                              non corrisponde a nessuna altra voce dell'ACL.\\
     \hline
   \end{tabular}
@@ -5275,7 +5280,7 @@ file) tutti quelli non presenti in \const{ACL\_MASK}.\footnote{questo diverso
 Un secondo aspetto dell'incidenza delle ACL sul comportamento del sistema è
 quello relativo alla creazione di nuovi file,\footnote{o oggetti sul
   filesystem, il comportamento discusso vale per le funzioni \func{open} e
-  \func{creat} (vedi sez.~\ref{sec:file_open}), \func{mkdir} (vedi
+  \func{creat} (vedi sez.~\ref{sec:file_open_close}), \func{mkdir} (vedi
   sez.~\ref{sec:file_dir_creat_rem}), \func{mknod} e \func{mkfifo} (vedi
   sez.~\ref{sec:file_mknod}).} che come accennato può essere modificato dalla
 presenza di una \textit{Default ACL} sulla directory che andrà a contenerli.
@@ -5484,31 +5489,31 @@ estensione usata dalle ACL di Linux e non è portabile, ma consente di
 semplificare l'inizializzazione in maniera molto comoda. 
 
 Altre due funzioni che consentono di creare una ACL già inizializzata sono
-\funcd{acl\_get\_fd} e \funcd{acl\_get\_file}, che però sono per lo più
-utilizzate per leggere la ACL corrente di un file; i rispettivi prototipi
-sono:
+\funcd{acl\_get\_fd} e \funcd{acl\_get\_file}, che consentono di leggere la
+ACL di un file; i rispettivi prototipi sono:
 
 \begin{funcproto}{
 \fhead{sys/types.h}
 \fhead{sys/acl.h}
 \fdecl{acl\_t acl\_get\_file(const char *path\_p, acl\_type\_t type)}
 \fdecl{acl\_t acl\_get\_fd(int fd)}
-\fdesc{Ottiene i dati delle ACL di un file.} 
+\fdesc{Leggono i dati delle ACL di un file.} 
 }
 
-{La funzione ritorna un oggetto di tipo \type{acl\_t} in caso di successo e
-  \val{NULL} per un errore, nel qual caso \var{errno} assumerà uno
-  dei valori:
+{Le funzioni ritornano un oggetto di tipo \type{acl\_t} in caso di successo e
+  \val{NULL} per un errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-  \item[\errcode{ENOMEM}] non c'è memoria sufficiente per allocare i dati.
+  \item[\errcode{ACCESS}] non c'è accesso per una componente di
+    \param{path\_p} o si è richiesta una ACL di default per un file (solo per
+    \func{acl\_get\_file}).
   \item[\errcode{EINVAL}] \param{type} non ha un valore valido (solo per
     \func{acl\_get\_file}).
   \item[\errcode{ENOTSUP}] il filesystem cui fa riferimento il file non
     supporta le ACL.
   \end{errlist}
-  ed inoltre \errval{EBADF} per \func{acl\_get\_fd}, e \errval{EACCES},
-  \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOTDIR}, per
-  \func{acl\_get\_file}. }
+  ed inoltre \errval{ENOMEM} per entrambe, \errval{EBADF} per
+  \func{acl\_get\_fd}, e \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{ENOTDIR}, per \func{acl\_get\_file} nel loro significato generico. }
 \end{funcproto}
 
 Le due funzioni ritornano, con un oggetto di tipo \type{acl\_t}, il valore
@@ -5689,23 +5694,23 @@ tab.~\ref{tab:acl_to_text_options}.
     \textbf{Tipo} & \textbf{Descrizione} \\
     \hline
     \hline
-    \const{TEXT\_ABBREVIATE}     & stampa le voci in forma abbreviata.\\
+    \const{TEXT\_ABBREVIATE}     & Stampa le voci in forma abbreviata.\\
     \const{TEXT\_NUMERIC\_IDS}   & non effettua la risoluzione numerica di
                                    \ids{UID} e \ids{GID}.\\
-    \const{TEXT\_SOME\_EFFECTIVE}& per ciascuna voce che contiene permessi che
+    \const{TEXT\_SOME\_EFFECTIVE}& Per ciascuna voce che contiene permessi che
                                    vengono eliminati dalla \const{ACL\_MASK}
                                    viene generato un commento con i permessi 
                                    effettivamente risultanti; il commento è
                                    separato con un tabulatore.\\
-    \const{TEXT\_ALL\_EFFECTIVE} & viene generato un commento con i permessi
+    \const{TEXT\_ALL\_EFFECTIVE} & Viene generato un commento con i permessi
                                    effettivi per ciascuna voce che contiene
                                    permessi citati nella \const{ACL\_MASK},
                                    anche quando questi non vengono modificati
                                    da essa; il commento è separato con un
                                    tabulatore.\\
-    \const{TEXT\_SMART\_INDENT}  & da usare in combinazione con le precedenti
-                                   \const{TEXT\_SOME\_EFFECTIVE} e
-                                   \const{TEXT\_ALL\_EFFECTIVE} aumenta
+    \const{TEXT\_SMART\_INDENT}  & Da usare in combinazione con le precedenti
+                                   opzioni \const{TEXT\_SOME\_EFFECTIVE} e
+                                   \const{TEXT\_ALL\_EFFECTIVE}, aumenta
                                    automaticamente il numero di spaziatori
                                    prima degli eventuali commenti in modo da
                                    mantenerli allineati.\\
@@ -5752,9 +5757,10 @@ buffer di dimensione sufficiente, il suo prototipo è:
 }  
 \end{funcproto}
 
-Ottenuta con \func{acl\_size} la dimensione per il buffer lo si potrà allocare
-direttamente con \func{malloc}. La rappresentazione binaria di una ACL si
-potrà poi ottenere con la funzione \funcd{acl\_copy\_ext}, il cui prototipo è:
+Ottenuta con \func{acl\_size} la dimensione per il buffer di una ACL lo si
+potrà allocare direttamente con \func{malloc}. La rappresentazione binaria di
+una ACL si potrà invece ottenere con la funzione \funcd{acl\_copy\_ext}, il
+cui prototipo è:
 
 \begin{funcproto}{
 \fhead{sys/types.h}
@@ -5939,10 +5945,10 @@ un messaggio di errore in caso contrario.
 
 Ottenuta la ACL la si converte in formato testuale (\texttt{\small 27}) con la
 funzione \func{acl\_to\_text}, controllando di nuovo se l'operazione ha
-successo (\texttt{\small 23--26}) ed uscendo in caso contrario.  Si provvede
-infine a stampare la rappresentazione testuale (\texttt{\small 28}) e dopo
-aver liberato (\texttt{\small 29--30}) le risorse allocate automaticamente, 
-si conclude l'esecuzione.
+successo (\texttt{\small 28--31}) ed uscendo in caso contrario.  Si provvede
+infine a stampare la rappresentazione testuale (\texttt{\small 32}) e dopo
+aver liberato (\texttt{\small 33--34}) le risorse allocate automaticamente, si
+conclude l'esecuzione.
 
 
 \subsection{La gestione delle quote disco}
@@ -6177,7 +6183,7 @@ singolo utente o gruppo.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.9\textwidth}
     \includestruct{listati/dqblk.h}
   \end{minipage} 
   \normalsize 
@@ -6268,11 +6274,11 @@ identificate tramite le costanti di tab.~\ref{tab:quotactl_id_format}.
     \textbf{Identificatore} & \textbf{Descrizione} \\
     \hline
     \hline
-    \const{QFMT\_VFS\_OLD}& il vecchio (ed obsoleto) formato delle quote.\\
-    \const{QFMT\_VFS\_V0} & la versione 0 usata dal VFS di Linux, supporta
+    \const{QFMT\_VFS\_OLD}& Il vecchio (ed obsoleto) formato delle quote.\\
+    \const{QFMT\_VFS\_V0} & La versione 0 usata dal VFS di Linux, supporta
                             \ids{UID} e \ids{GID} a 32 bit e limiti fino a
                             $2^{42}$ byte e $2^{32}$ file.\\
-    \const{QFMT\_VFS\_V1} & la versione 1 usata dal VFS di Linux, supporta
+    \const{QFMT\_VFS\_V1} & La versione 1 usata dal VFS di Linux, supporta
                             \ids{UID} e \ids{GID} a 32 bit e limiti fino a
                             $2^{64}$ byte e $2^{64}$ file.\\
     \hline
@@ -6294,7 +6300,7 @@ la cui definizione è riportata in fig.~\ref{fig:dqinfo_struct}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/dqinfo.h}
   \end{minipage} 
   \normalsize 
@@ -6995,7 +7001,8 @@ sez.~\ref{sec:file_xattr} e \ref{sec:file_ACL}), poter ignorare lo
 \itindex{sticky~bit} \textit{sticky bit} nella cancellazione dei file (vedi
 sez.~\ref{sec:file_special_perm}), la possibilità di impostare il flag di
 \const{O\_NOATIME} con \func{open} e \func{fcntl} (vedi
-sez.~\ref{sec:file_open} e sez.~\ref{sec:file_fcntl}) senza restrizioni.
+sez.~\ref{sec:file_open_close} e sez.~\ref{sec:file_fcntl_ioctl}) senza
+restrizioni.
 
 Una seconda capacità che copre diverse operazioni, in questo caso riguardanti
 la rete, è \const{CAP\_NET\_ADMIN}, che consente di impostare le opzioni
@@ -7057,7 +7064,7 @@ basso livello; i loro rispettivi prototipi sono:
 \fdesc{Imposta le \textit{capabilities}.} 
 }
 
-{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+{Le funzioni ritornano $0$ in caso di successo e $-1$ per un errore, nel qual
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
   \item[\errcode{EFAULT}] si è indicato un puntatore sbagliato o nullo
@@ -7090,7 +7097,7 @@ presente.\footnote{e non è chiaro neanche quanto sia mai stato davvero
 \begin{figure}[!htb]
   \footnotesize
   \centering
-  \begin{minipage}[c]{\textwidth}
+  \begin{minipage}[c]{0.8\textwidth}
     \includestruct{listati/cap_user_header_t.h}
   \end{minipage} 
   \normalsize 
@@ -7877,7 +7884,7 @@ librerie) di cui il server potrebbe avere bisogno.
 % LocalWords:  lazy encfs sshfs setfsent getfsent getfsfile getfsspec endfsent
 % LocalWords:  setmntent getmntent addmntent endmntent hasmntopt such offsetof
 % LocalWords:  member scan attack EOVERFLOW BITS blkcnt rdev FDCWD functions
-% LocalWords:  faccessat grpid lacl AppArmor capsetp
+% LocalWords:  faccessat grpid lacl AppArmor capsetp mygetfacl
 
 %%% Local Variables: 
 %%% mode: latex