Ancora su prctl, quasi completate le opzioni, riposizionati alcuni TODO.
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 5 Sep 2011 14:28:48 +0000 (14:28 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 5 Sep 2011 14:28:48 +0000 (14:28 +0000)
filedir.tex
prochand.tex
system.tex

index e959de846628f11b4f71efae78b702338ffc7988..8e93228a4e386834ce53df2f883d5aaa566ebf41 100644 (file)
@@ -4848,13 +4848,14 @@ illustrati in tab.~\ref{tab:proc_uid_gid}, si avrà allora che:
   quelle capacità della precedente lista che sono presenti nel suo
   \textit{permitted set}.
 \item se come risultato di una transizione riguardante gli identificativi dei
   quelle capacità della precedente lista che sono presenti nel suo
   \textit{permitted set}.
 \item se come risultato di una transizione riguardante gli identificativi dei
-  gruppi \texttt{real}, \textit{saved} ed \textit{effective} in cui si passa
+  gruppi \textit{real}, \textit{saved} ed \textit{effective} in cui si passa
   da una situazione in cui uno di questi era nullo ad una in cui sono tutti
   non nulli,\footnote{in sostanza questo è il caso di quando si chiama
     \func{setuid} per rimuovere definitivamente i privilegi di amministratore
     da un processo.} verranno azzerati completamente sia il \textit{permitted
     set} che l'\textit{effective set}.
 \end{enumerate*}
   da una situazione in cui uno di questi era nullo ad una in cui sono tutti
   non nulli,\footnote{in sostanza questo è il caso di quando si chiama
     \func{setuid} per rimuovere definitivamente i privilegi di amministratore
     da un processo.} verranno azzerati completamente sia il \textit{permitted
     set} che l'\textit{effective set}.
 \end{enumerate*}
+\label{sec:capability-uid-transition}
 
 La combinazione di tutte queste regole consente di riprodurre il comportamento
 ordinario di un sistema di tipo Unix tradizionale, ma può risultare
 
 La combinazione di tutte queste regole consente di riprodurre il comportamento
 ordinario di un sistema di tipo Unix tradizionale, ma può risultare
@@ -5062,13 +5063,11 @@ che è opportuno dettagliare maggiormente.
     \const{CAP\_SETPCAP}    & La capacità di modifiche privilegiate alle
                               \textit{capabilities}.\\   
     \const{CAP\_SYS\_ADMIN} & La capacità di eseguire una serie di compiti
     \const{CAP\_SETPCAP}    & La capacità di modifiche privilegiate alle
                               \textit{capabilities}.\\   
     \const{CAP\_SYS\_ADMIN} & La capacità di eseguire una serie di compiti
-                              amministrativi. \\
+                              amministrativi.\\
     \const{CAP\_SYS\_BOOT}  & La capacità di fare eseguire un riavvio del
     \const{CAP\_SYS\_BOOT}  & La capacità di fare eseguire un riavvio del
-                              sistema.\\
-% TODO trattare reboot e kexec 
+                              sistema (vedi sez.~\ref{sec:sys_reboot}).\\
     \const{CAP\_SYS\_CHROOT}& La capacità di eseguire la funzione
     \const{CAP\_SYS\_CHROOT}& La capacità di eseguire la funzione
-                              \func{chroot} (vedi
-                              sez.~\ref{sec:file_chroot}).\\
+                              \func{chroot} (vedi sez.~\ref{sec:file_chroot}).\\
     \const{CAP\_MAC\_ADMIN} & La capacità amministrare il \textit{Mandatory
                                Access Control} di Smack (dal kernel 2.6.25).\\  
     \const{CAP\_MAC\_OVERRIDE}& La capacità evitare il  \textit{Mandatory
     \const{CAP\_MAC\_ADMIN} & La capacità amministrare il \textit{Mandatory
                                Access Control} di Smack (dal kernel 2.6.25).\\  
     \const{CAP\_MAC\_OVERRIDE}& La capacità evitare il  \textit{Mandatory
@@ -5076,7 +5075,7 @@ che è opportuno dettagliare maggiormente.
     \const{CAP\_SYS\_MODULE}& La capacità di caricare e rimuovere moduli del
                               kernel.\\ 
     \const{CAP\_SYS\_NICE}  & La capacità di modificare le varie priorità dei
     \const{CAP\_SYS\_MODULE}& La capacità di caricare e rimuovere moduli del
                               kernel.\\ 
     \const{CAP\_SYS\_NICE}  & La capacità di modificare le varie priorità dei
-                              processi.\\
+                              processi (vedi sez.~\ref{sec:proc_priority}).\\
     \const{CAP\_SYS\_PACCT} & La capacità di usare le funzioni di
                               \textit{accounting} dei processi (vedi
                               sez.~\ref{sec:sys_bsd_accounting}).\\ 
     \const{CAP\_SYS\_PACCT} & La capacità di usare le funzioni di
                               \textit{accounting} dei processi (vedi
                               sez.~\ref{sec:sys_bsd_accounting}).\\ 
index 8d7487b54fd97af4d4c5cda770cc2f1129708b0c..e3aa1e0152cf5cbf79b658f9f78bd5ecad1c940a 100644 (file)
@@ -3363,7 +3363,7 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento:
   kernel 2.3.20, fino al kernel 2.6.12 e per i kernel successivi al 2.6.17 era
   possibile usare solo un valore 0 di \param{arg2} per disattivare il flag ed
   un valore 1 per attivarlo, nei kernel dal 2.6.13 al 2.6.17 è stato
   kernel 2.3.20, fino al kernel 2.6.12 e per i kernel successivi al 2.6.17 era
   possibile usare solo un valore 0 di \param{arg2} per disattivare il flag ed
   un valore 1 per attivarlo, nei kernel dal 2.6.13 al 2.6.17 è stato
-  supportato anche il valore 2 che causava la generazione di un
+  supportato anche il valore 2, che causava la generazione di un
   \itindex{core~dump} \textit{core dump} leggibile solo
   dall'amministratore.\footnote{la funzionalità è stata rimossa per motivi di
     sicurezza, in quanto consentiva ad un utente normale di creare un file di
   \itindex{core~dump} \textit{core dump} leggibile solo
   dall'amministratore.\footnote{la funzionalità è stata rimossa per motivi di
     sicurezza, in quanto consentiva ad un utente normale di creare un file di
@@ -3378,40 +3378,143 @@ predefinite del seguente elenco, che illustra quelle disponibili al momento:
   sono: \const{PR\_ENDIAN\_BIG} (\textit{big endian}),
   \const{PR\_ENDIAN\_LITTLE} (\textit{little endian}), e
   \const{PR\_ENDIAN\_PPC\_LITTLE} (lo pseudo \textit{little endian} del
   sono: \const{PR\_ENDIAN\_BIG} (\textit{big endian}),
   \const{PR\_ENDIAN\_LITTLE} (\textit{little endian}), e
   \const{PR\_ENDIAN\_PPC\_LITTLE} (lo pseudo \textit{little endian} del
-  PowerPC) Introdotta a partire dal kernel 2.6.18, solo per architettura
+  PowerPC). Introdotta a partire dal kernel 2.6.18, solo per architettura
   PowerPC.
 \item[\const{PR\_GET\_ENDIAN}] Ottiene il valore della \textit{endianess} del
   processo chiamante, salvato sulla variabile puntata da \param{arg2} che deve
   essere passata come di tipo \type{(int *)}. Introdotta a partire dal kernel
   2.6.18, solo su PowerPC.
   PowerPC.
 \item[\const{PR\_GET\_ENDIAN}] Ottiene il valore della \textit{endianess} del
   processo chiamante, salvato sulla variabile puntata da \param{arg2} che deve
   essere passata come di tipo \type{(int *)}. Introdotta a partire dal kernel
   2.6.18, solo su PowerPC.
-\item[\const{PR\_SET\_FPEMU}] Introdotta a partire dal kernel 2.4.18, solo su
-  ia64.
-\item[\const{PR\_GET\_FPEMU}] Introdotta a partire dal kernel 2.4.18, solo su
-  ia64.
-\item[\const{PR\_SET\_FPEXC}] Introdotta a partire dal kernel 2.4.21, solo su
-  PowerPC.
-\item[\const{PR\_GET\_FPEXC}] Introdotta a partire dal kernel 2.4.21, solo su
-  PowerPC.
-\item[\const{PR\_SET\_KEEPCAPS}] Introdotta  a partire dal kernel 2.2.18.
-\item[\const{PR\_GET\_KEEPCAPS}] Introdotta a partire dal kernel 2.2.18.
-\item[\const{PR\_SET\_NAME}] Introdotta a partire  dal kernel 2.6.9.
-\item[\const{PR\_GET\_NAME}] Introdotta a partire  dal kernel 2.6.9.
-\item[\const{PR\_SET\_PDEATHSIG}] Introdotta  a partire dal kernel 2.1.57.
-\item[\const{PR\_GET\_PDEATHSIG}] Introdotta a partire  dal kernel 2.3.15.
-\item[\const{PR\_SET\_SECCOMP}] Introdotta a partire  dal kernel 2.6.23.
-\item[\const{PR\_GET\_SECCOMP}] Introdotta a partire  dal kernel 2.6.23.
-\item[\const{PR\_SET\_SECUREBITS}] Introdotta a partire  dal kernel 2.6.26.
-\item[\const{PR\_GET\_SECUREBITS}] Introdotta a partire  dal kernel 2.6.26.
-\item[\const{PR\_SET\_TIMING}] Introdotta a partire  dal kernel 2.6.0-test4.
-\item[\const{PR\_GET\_TIMING}] Introdotta a partire dal kernel 2.6.0-test4.
-\item[\const{PR\_SET\_TSC}] Introdotta a partire dal kernel 2.6.26, solo su
-  x86.
-\item[\const{PR\_GET\_TSC}] Introdotta a partire dal kernel 2.6.26, solo su
-  x86.
-\item[\const{PR\_SET\_UNALIGN}] Introdotta con diverse versioni su diverse
-  architetture.
-\item[\const{PR\_GET\_UNALIGN}] Introdotta con diverse versioni su diverse
+\item[\const{PR\_SET\_FPEMU}] Imposta i bit di controllo per l'emulazione
+  della virgola mobile su architettura ia64, secondo il valore
+  di \param{arg2}, si deve passare \const{PR\_FPEMU\_NOPRINT} per emulare in
+  maniera trasparente l'accesso alle operazioni in virgola mobile, o
+  \const{PR\_FPEMU\_SIGFPE} per non emularle ed inviare il segnale
+  \const{SIGFPE}. Introdotta a partire dal kernel 2.4.18, solo su ia64.
+\item[\const{PR\_GET\_FPEMU}] Ottiene il valore dei flag di controllo
+  dell'emulazione della virgola mobile, salvato all'indirizzo puntato
+  da \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta a
+  partire dal kernel 2.4.18, solo su ia64.
+\item[\const{PR\_SET\_FPEXC}] Imposta la modalità delle eccezioni in virgola
+  mobile (\textit{floating-point exception mode}) al valore di \param{arg2}.
+  I valori possibili sono: \const{PR\_FP\_EXC\_SW\_ENABLE} per usare FPEXC per
+  le eccezioni, \const{PR\_FP\_EXC\_DIV} per la divisione per zero in virgola
+  mobile, \const{PR\_FP\_EXC\_OVF} per gli overflow, \const{PR\_FP\_EXC\_UND}
+  per gli underflow, \const{PR\_FP\_EXC\_RES} per risultati non esatti,
+  \const{PR\_FP\_EXC\_INV} per operazioni invalide,
+  \const{PR\_FP\_EXC\_DISABLED} per disabilitare le eccezioni,
+  \const{PR\_FP\_EXC\_NONRECOV} per utilizzare la modalità di eccesione
+  asincrona non recuperabile, \const{PR\_FP\_EXC\_ASYNC} per utilizzare la
+  modalità di eccesione asincrona recuperabile, \const{PR\_FP\_EXC\_PRECISE}
+  per la modalita precisa di eccezione.\footnote{trattasi di gestione
+    specialistica della gestione delle eccezioni dei calcoli in virgola mobile
+    che, i cui dettagli al momento vanno al di là dello scopo di questo
+    testo.} Introdotta a partire dal kernel 2.4.21, solo su PowerPC.
+\item[\const{PR\_GET\_FPEXC}] Ottiene il valore della modalità delle eccezioni
+  delle operazioni in virgola mobile, salvata all'indirizzo
+  puntato \param{arg2}, che deve essere di tipo \code{(int *)}.  Introdotta a
+  partire dal kernel 2.4.21, solo su PowerPC.
+\item[\const{PR\_SET\_KEEPCAPS}] Consente di controllare quali
+  \textit{capabilities} vengono cancellate quando si esegue un cambiamento di
+  \textit{user-ID} del processo (per i dettagli si veda
+  sez.~\ref{sec:proc_capabilities}, in particolare quanto illustrato a
+  pag.~\pageref{sec:capability-uid-transition}). Un valore nullo (il default)
+  per \param{arg2} comporta che vengano cancellate, il valore 1 che vengano
+  manenute, questo valore viene sempre cancellato attraverso una
+  \func{exec}. L'uso di questo flag è stato sostituito, a partire dal kernel
+  2.6.26, dal flag \const{SECURE\_KEEP\_CAPS} dei \itindex{securebits}
+  \textit{securebits} (vedi \const{PR\_SET\_SECUREBITS}). Introdotta a partire
+  dal kernel 2.2.18.
+\item[\const{PR\_GET\_KEEPCAPS}] Ottiene come valore di ritorno della funzione
+  il valore del flag di controllo impostato con
+  \const{PR\_SET\_KEEPCAPS}. Introdotta a partire dal kernel 2.2.18.
+\item[\const{PR\_SET\_NAME}] Imposta il nome del processo chiamante alla
+  stringa puntata da \param{arg2}, che deve essere di tipo \code{(char *)}. Il
+  nome può essere lungo al massimo 16 caratteri, e la stringa deve essere
+  terminata da NUL se più corta.  Introdotta a partire dal kernel 2.6.9.
+\item[\const{PR\_GET\_NAME}] Ottiene il nome del processo chiamante nella
+  stringa puntata da \param{arg2}, che deve essere di tipo \code{(char *)}; si
+  devono allocare per questo almeno 16 byte, e il nome sarà terminato da NUL
+  se più corto. Introdotta a partire dal kernel 2.6.9.
+\item[\const{PR\_SET\_PDEATHSIG}] Consente di richiedere l'emissione di un
+  segnale, che sarà ricevuto dal processo chiamante, in occorrenza della
+  terminazione del proprio processo padre.\footnote{in sostanza consente di
+    invertire il ruolo di \const{SIGCHLD}.} Il valore di \param{arg2} deve
+  indicare il numero del segnale, o 0 per disabilitare l'emissione. Il valore
+  viene automaticamente cancellato per un processo figlio creato con
+  \func{fork}.  Introdotta a partire dal kernel 2.1.57.
+\item[\const{PR\_GET\_PDEATHSIG}] Ottiene il valore dell'eventuale segnale
+  emesso alla terminazione del padre, salvato all'indirizzo
+  puntato \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta a
+  partire dal kernel 2.3.15.
+\item[\const{PR\_SET\_SECCOMP}] Imposta il cosiddetto
+  \itindex{secure~computing~mode} \textit{secure computing mode} per il
+  processo corrente. Prevede come unica possibilità che \param{arg2} sia
+  impostato ad 1. Una volta abilitato il \textit{secure computing mode} il
+  processo potrà utilizzare soltanto un insieme estremamente limitato di
+  \textit{system call}: \func{read}, \func{write}, \func{\_exit} e
+  \func{sigreturn}, ogni altra \textit{system call} porterà all'emissione di
+  un \func{SIGKILL}.  Il \textit{secure computing mode} è stato ideato per
+  fornire un supporto per l'esecuzione di codice esterno non fidato e non
+  verificabile a scopo di calcolo;\footnote{lo scopo è quello di poter vendere
+    la capacità di calcolo della proprio macchina ad un qualche servizio di
+    calcolo distribuito senza comprometterne la sicurezza eseguendo codice non
+    sotto il proprio controllo.} in genere i dati vengono letti o scritti
+  grazie ad un socket o una pipe, e per evitare problemi di sicurezza non sono
+  possibili altre operazioni se non quelle citate.  Introdotta a partire dal
+  kernel 2.6.23, disponibile solo se si è abilitato il supporto nel kernel con
+  \texttt{CONFIG\_SECCOMP}.
+\item[\const{PR\_GET\_SECCOMP}] Ottiene come valore di ritorno della funzione
+  lo stato corrente del \textit{secure computing mode}, al momento attuale la
+  funzione è totalmente inutile in quanto l'unico valore ottenibile è 0, dato
+  che la chiamata di questa funzione in \textit{secure computing mode}
+  comporterebbe l'emissione di \texttt{SIGKILL}, è stata comunque definita per
+  eventuali estensioni future.  Introdotta a partire dal kernel 2.6.23.
+\item[\const{PR\_SET\_SECUREBITS}] Imposta i \itindex{securebits}
+  \textit{securebits} per il processo corrente al valore indicato
+  da \param{arg2}; per i dettagli si veda sez.~\ref{sec:proc_capabilities}, ed
+  in particolare i valori di tab.~\ref{tab:securebits_values} e la relativa
+  trattazione. Introdotta a partire dal kernel 2.6.26.
+\item[\const{PR\_GET\_SECUREBITS}] Ottiene come valore di ritorno della
+  funzione l'impostazione corrente per i \itindex{securebits}
+  \textit{securebits}. Introdotta a partire dal kernel 2.6.26.
+\item[\const{PR\_SET\_TIMING}] Imposta il metodo di temporizzazione del
+  processo da indicare con il valore di \param{arg2}, con
+  \const{PR\_TIMING\_STATISTICAL} si usa il metodo statistico tradizionale,
+  con \const{PR\_TIMING\_TIMESTAMP} il più accurato basato su dei
+  \textit{timestamp}, quest'ultimo però non è ancora implementato ed il suo
+  uso comporta la restituzione di un errore di \errval{EINVAL}. Introdotta a
+  partire dal kernel 2.6.0-test4.
+\item[\const{PR\_GET\_TIMING}] Ottiene come valore di ritorno della funzione
+  il metodo di temporizzazione del processo attualmente in uso. Introdotta a
+  partire dal kernel 2.6.0-test4.
+\item[\const{PR\_SET\_TSC}] Imposta il flag che indica se il processo può
+  leggere il registro di processore contenente il contatore dei
+  \textit{timestamp} (TSC, o \textit{Time Stamp Counter}) da indicare con il
+  valore di \param{arg2}. Si deve specificare \const{PR\_TSC\_ENABLE} per
+  abilitare la lettura o \const{PR\_TSC\_SIGSEGV} per disabilitarla con la
+  generazione di un segnale di \const{SIGSEGV}. La lettura viene
+  automaticamente disabilitata se si attiva il \textit{secure computing mode}.
+  Introdotta a partire dal kernel 2.6.26, solo su x86.
+\item[\const{PR\_GET\_TSC}] Ottiene il valore del flag che controlla la
+  lettura del contatatore dei \textit{timestamp}, salvato all'indirizzo
+  puntato \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta a
+  partire dal kernel 2.6.26, solo su x86.
+% articoli sul TSC e relativi problemi: http://lwn.net/Articles/209101/,
+% http://blog.cr0.org/2009/05/time-stamp-counter-disabling-oddities.html,
+% http://en.wikipedia.org/wiki/Time_Stamp_Counter 
+\item[\const{PR\_SET\_UNALIGN}] Imposta la modalità di controllo per l'accesso
+  a indirizzi di memoria non allineati, che in varie architetture risultano
+  illegali, da indicare con il valore di \param{arg2}. Si deve specificare
+  \const{PR\_UNALIGN\_NOPRINT} per ignorare gli accessi non allineati, e
+  \const{PR\_UNALIGN\_SIGBUS} per generare un segnale di \const{SIGBUS} in
+  caso di accesso non allineato.  Introdotta con diverse versioni su diverse
   architetture.
   architetture.
+\item[\const{PR\_GET\_UNALIGN}] Ottiene il valore della modalità di controllo
+  per l'accesso a indirizzi di memoria non allineati, salvato all'indirizzo
+  puntato \param{arg2}, che deve essere di tipo \code{(int *)}. Introdotta con
+  diverse versioni su diverse architetture.
+\item[\const{PR\_MCE\_KILL}] Introdotta a partire dal kernel 2.6.32.
+\item[\const{PR\_MCE\_KILL\_GET}] Introdotta a partire dal kernel 2.6.32.
 \label{sec:prctl_operation}
 \end{basedescript}
 
 \label{sec:prctl_operation}
 \end{basedescript}
 
@@ -3432,6 +3535,10 @@ Da fare
 
 Da fare
 
 
 Da fare
 
+% TODO: funzioni varie sparse citate da qualche parte e da trattare forse in
+% una sezione a parte: sigreturn,
+
+
 \section{Problematiche di programmazione multitasking}
 \label{sec:proc_multi_prog}
 
 \section{Problematiche di programmazione multitasking}
 \label{sec:proc_multi_prog}
 
index 12ed77c9fe12256b9b7a3dce63c7719011a79ef3..7ed9fe981d5167d7db05ccf11880f6a6b58f0307 100644 (file)
@@ -933,6 +933,11 @@ tralasceremo la trattazione, rimandando al manuale delle \acr{glibc}
 %\label{sec:keyctl_management}
 
 
 %\label{sec:keyctl_management}
 
 
+%
+% \subsection{La gestione dello spegnimento e del riavvio}
+\label{sec:sys_reboot}
+% TODO trattare reboot, kexec_load, ...
+
 
 \subsection{La gestione delle informazioni su utenti e gruppi}
 \label{sec:sys_user_group}
 
 \subsection{La gestione delle informazioni su utenti e gruppi}
 \label{sec:sys_user_group}