Indici e materiale sugli extended attributes.
[gapil.git] / prochand.tex
index a6b8484628ed44335402b1bd7d0ce95b56dd9508..d3e89f5984f7359f6ccd75b8b96e8b8cdfb10d7f 100644 (file)
@@ -1186,15 +1186,15 @@ nuovo riceverne lo stato.
     \textbf{Macro} & \textbf{Descrizione}\\
     \hline
     \hline
-    \const{WEXITED}   & Ritorna quando un processo figlio è terminato. \\
+    \const{WEXITED}   & Ritorna quando un processo figlio è terminato.\\
     \const{WNOHANG}   & Ritorna immediatamente anche se non c'è niente da
-                        notificare. \\ 
-    \const{WSTOPPED} &  Ritorna quando un processo figlio è stato fermato. \\
-    \const{WCONTINUED}& ritorna quando un processo figlio che era stato
-                        fermato ha ripreso l'esecuzione. \\
+                        notificare.\\ 
+    \const{WSTOPPED} &  Ritorna quando un processo figlio è stato fermato.\\
+    \const{WCONTINUED}& Ritorna quando un processo figlio che era stato
+                        fermato ha ripreso l'esecuzione.\\
     \const{WNOWAIT}   & Lascia il processo ancora in attesa di ricezione, così
                         che una successiva chiamata possa di nuovo riceverne
-                        lo stato. \\
+                        lo stato.\\
     \hline
   \end{tabular}
   \caption{Costanti che identificano i bit dell'argomento \param{options}
@@ -1471,8 +1471,8 @@ condivise, viene lanciato il \textit{linker} dinamico \cmd{/lib/ld.so} prima
 del programma per caricare le librerie necessarie ed effettuare il link
 dell'eseguibile. Se il programma è in formato ELF per caricare le librerie
 dinamiche viene usato l'interprete indicato nel segmento \const{PT\_INTERP},
-in genere questo è \file{/lib/ld-linux.so.1} per programmi collegati con le
-\acr{libc5}, e \file{/lib/ld-linux.so.2} per programmi collegati con le
+in genere questo è \sysfile{/lib/ld-linux.so.1} per programmi collegati con le
+\acr{libc5}, e \sysfile{/lib/ld-linux.so.2} per programmi collegati con le
 \acr{glibc}. 
 
 Infine nel caso il file sia uno script esso deve iniziare con una linea nella
@@ -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
-  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
-  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
@@ -1562,27 +1564,27 @@ tab.~\ref{tab:proc_uid_gid}.
     \hline
     \hline
     \acr{uid}   & \textit{real} & \textsl{user-ID reale} 
-                & indica l'utente che ha lanciato il programma\\ 
+                & Indica l'utente che ha lanciato il programma.\\ 
     \acr{gid}   & '' &\textsl{group-ID reale} 
-                & indica il gruppo principale dell'utente che ha lanciato 
-                  il programma \\ 
+                & Indica il gruppo principale dell'utente che ha lanciato 
+                  il programma.\\ 
     \hline
     \acr{euid}  & \textit{effective} &\textsl{user-ID effettivo} 
-                & indica l'utente usato nel controllo di accesso \\ 
+                & Indica l'utente usato nel controllo di accesso.\\ 
     \acr{egid}  & '' & \textsl{group-ID effettivo} 
-                & indica il gruppo usato nel controllo di accesso \\ 
+                & Indica il gruppo usato nel controllo di accesso.\\ 
     --          & -- & \textsl{group-ID supplementari} 
-                & indicano gli ulteriori gruppi cui l'utente appartiene \\ 
+                & Indicano gli ulteriori gruppi cui l'utente appartiene.\\ 
     \hline
     --          & \textit{saved} & \textsl{user-ID salvato} 
-                & è una copia dell'\acr{euid} iniziale\\ 
+                & È una copia dell'\acr{euid} iniziale.\\ 
     --          & '' & \textsl{group-ID salvato} 
-                & è una copia dell'\acr{egid} iniziale \\ 
+                & È una copia dell'\acr{egid} iniziale.\\ 
     \hline
     \acr{fsuid} & \textit{filesystem} &\textsl{user-ID di filesystem} 
-                & indica l'utente effettivo per l'accesso al filesystem \\ 
+                & Indica l'utente effettivo per l'accesso al filesystem. \\ 
     \acr{fsgid} & '' & \textsl{group-ID di filesystem} 
-                & indica il gruppo effettivo per l'accesso al filesystem  \\ 
+                & Indica il gruppo effettivo per l'accesso al filesystem.\\ 
     \hline
   \end{tabular}
   \caption{Identificatori di utente e gruppo associati a ciascun processo con
@@ -1721,12 +1723,12 @@ il programma, effettuare il lavoro che non necessita di privilegi aggiuntivi,
 ed eventualmente tornare indietro.
 
 Come esempio per chiarire l'uso di queste funzioni prendiamo quello con cui
-viene gestito l'accesso al file \file{/var/log/utmp}.  In questo file viene
+viene gestito l'accesso al file \sysfile{/var/log/utmp}.  In questo file viene
 registrato chi sta usando il sistema al momento corrente; chiaramente non può
 essere lasciato aperto in scrittura a qualunque utente, che potrebbe
 falsificare la registrazione. Per questo motivo questo file (e l'analogo
-\file{/var/log/wtmp} su cui vengono registrati login e logout) appartengono ad
-un gruppo dedicato (\acr{utmp}) ed i programmi che devono accedervi (ad
+\sysfile{/var/log/wtmp} su cui vengono registrati login e logout) appartengono
+ad un gruppo dedicato (\acr{utmp}) ed i programmi che devono accedervi (ad
 esempio tutti i programmi di terminale in X, o il programma \cmd{screen} che
 crea terminali multipli su una console) appartengono a questo gruppo ed hanno
 il bit \acr{sgid} impostato.
@@ -1740,8 +1742,8 @@ situazione degli identificatori 
   \textsl{group-ID salvato}    &=& \textrm{\acr{utmp}}
 \end{eqnarray*}
 in questo modo, dato che il \textsl{group-ID effettivo} è quello giusto, il
-programma può accedere a \file{/var/log/utmp} in scrittura ed aggiornarlo. A
-questo punto il programma può eseguire una \code{setgid(getgid())} per
+programma può accedere a \sysfile{/var/log/utmp} in scrittura ed aggiornarlo.
+questo punto il programma può eseguire una \code{setgid(getgid())} per
 impostare il \textsl{group-ID effettivo} a quello dell'utente (e dato che il
 \textsl{group-ID reale} corrisponde la funzione avrà successo), in questo modo
 non sarà possibile lanciare dal terminale programmi che modificano detto file,
@@ -1754,7 +1756,7 @@ in tal caso infatti la situazione degli identificatori sarebbe:
 \end{eqnarray*}
 e ogni processo lanciato dal terminale avrebbe comunque \acr{gid} come
 \textsl{group-ID effettivo}. All'uscita dal terminale, per poter di nuovo
-aggiornare lo stato di \file{/var/log/utmp} il programma eseguirà una
+aggiornare lo stato di \sysfile{/var/log/utmp} il programma eseguirà una
 \code{setgid(utmp)} (dove \var{utmp} è il valore numerico associato al gruppo
 \acr{utmp}, ottenuto ad esempio con una precedente \func{getegid}), dato che
 in questo caso il valore richiesto corrisponde al \textsl{group-ID salvato} la
@@ -1765,7 +1767,7 @@ funzione avr
   \textsl{group-ID effettivo}  &=& \textrm{\acr{utmp}} \\
   \textsl{group-ID salvato}    &=& \textrm{\acr{utmp} (invariato)}
 \end{eqnarray*}
-consentendo l'accesso a \file{/var/log/utmp}.
+consentendo l'accesso a \sysfile{/var/log/utmp}.
 
 Occorre però tenere conto che tutto questo non è possibile con un processo con
 i privilegi di amministratore, in tal caso infatti l'esecuzione di una
@@ -2055,7 +2057,7 @@ un utente specifico, si pu
 \end{functions}
 
 La funzione esegue la scansione del database dei gruppi (usualmente
-\file{/etc/groups}) cercando i gruppi di cui è membro l'utente \param{user}
+\conffile{/etc/group}) cercando i gruppi di cui è membro l'utente \param{user}
 con cui costruisce una lista di gruppi supplementari, a cui aggiunge anche
 \param{group}, infine imposta questa lista per il processo corrente usando
 \func{setgroups}.  Si tenga presente che sia \func{setgroups} che
@@ -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 è
-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]
@@ -2195,7 +2197,7 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
                               (limitatamente a quelle che il processo
                               chiamante ha nel suo insieme di capacità
                               permesse) da qualunque processo.\\
-    \const{CAP\_LINUX\_IMMUTABLE}& la capacità di impostare gli attributi
+    \const{CAP\_LINUX\_IMMUTABLE}& La capacità di impostare gli attributi
                               \textit{immutable} e \itindex{append~mode}
                               \textit{append only} per i file su un
                               filesystem che supporta questi 
@@ -2206,7 +2208,7 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
     \const{CAP\_NET\_BROADCAST}& La capacità di consentire l'uso di socket in
                               \itindex{broadcast} \textit{broadcast} e
                               \itindex{multicast} \textit{multicast}.\\ 
-    \const{CAP\_NET\_ADMIN} & la capacità di eseguire alcune operazioni
+    \const{CAP\_NET\_ADMIN} & La capacità di eseguire alcune operazioni
                               privilegiate sulla rete (impostare le opzioni
                               privilegiate dei socket, abilitare il
                               \itindex{multicast} \textit{multicasting},
@@ -2247,12 +2249,12 @@ implementata.\footnote{per attualmente si intende fino al kernel 2.6.13, e
                               sistema.\\
     \const{CAP\_SYS\_NICE}  & La capacità di modificare le priorità dei
                               processi (vedi sez.~\ref{sec:proc_priority}). \\ 
-    \const{CAP\_SYS\_RESOURCE}& la capacità di superare le limitazioni sulle
+    \const{CAP\_SYS\_RESOURCE}& La capacità di superare le limitazioni sulle
                               risorse, aumentare le quote disco, usare lo
                               spazio disco riservato all'amministratore.\\ 
     \const{CAP\_SYS\_TIME}  & La capacità di modificare il tempo di sistema
                               (vedi sez.~\ref{sec:sys_time}).\\ 
-    \const{CAP\_SYS\_TTY\_CONFIG}& la capacità di simulare un \textit{hangup}
+    \const{CAP\_SYS\_TTY\_CONFIG}& La capacità di simulare un \textit{hangup}
                               della console, con la funzione
                               \func{vhangup}.\\
     \const{CAP\_MKNOD}      & La capacità di creare file di dispositivo con la
@@ -2330,7 +2332,7 @@ un \textsl{AND} binario del contenuto corrente del \textit{capabilities
 capacità in esso elencate.
 
 Il \textit{capabilities bounding set} è un parametro di sistema, accessibile
-attraverso il contenuto del file \file{/proc/sys/kernel/cap-bound}, che per
+attraverso il contenuto del file \procfile{/proc/sys/kernel/cap-bound}, che per
 questa sua caratteristica consente di impostare un limite generale alle
 capacità che possono essere accordate ai vari processi.  Questo valore può
 essere impostato ad un valore arbitrario esclusivamente dal primo processo
@@ -3545,7 +3547,7 @@ qualunque momento, e le operazioni di un eventuale \textit{signal handler}
 sono compiute nello stesso spazio di indirizzi del processo. Per questo, anche
 il solo accesso o l'assegnazione di una variabile possono non essere più
 operazioni atomiche (torneremo su questi aspetti in
-sez.~\ref{sec:sig_control}).
+sez.~\ref{sec:sig_adv_control}).
 
 In questo caso il sistema provvede un tipo di dato, il \type{sig\_atomic\_t},
 il cui accesso è assicurato essere atomico.  In pratica comunque si può