X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=system.tex;h=8f074839df2b65ff3375a0343db6bac6d84e551c;hp=7589160ef4b4532a3d1a4af39433998bccb999f2;hb=dcf2c2df897955ff3503a7c426025457ab456fd7;hpb=b3593007c4edd76ecbf7386967c1b25d27eed828 diff --git a/system.tex b/system.tex index 7589160..8f07483 100644 --- a/system.tex +++ b/system.tex @@ -716,9 +716,10 @@ dall'altra con il diffondersi delle reti la necessità di centralizzare le informazioni degli utenti e dei gruppi per insiemi di macchine, in modo da mantenere coerenti i dati, ha portato anche alla necessità di poter recuperare e memorizzare dette informazioni su supporti diversi, introducendo il sistema -del \itindex{Name~Service~Switch} \textit{Name Service Switch} che tratteremo -brevemente più avanti (in sez.~\ref{sec:sock_resolver}) dato che la maggior -parte delle sua applicazioni sono relative alla risoluzioni di nomi di rete. +del \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch} che +tratteremo brevemente più avanti (in sez.~\ref{sec:sock_resolver}) dato che la +maggior parte delle sua applicazioni sono relative alla risoluzioni di nomi di +rete. In questo paragrafo ci limiteremo comunque a trattare le funzioni classiche per la lettura delle informazioni relative a utenti e gruppi tralasciando @@ -850,15 +851,16 @@ fig.~\ref{fig:sys_group_struct}. Le funzioni viste finora sono in grado di leggere le informazioni sia direttamente dal file delle password in \conffile{/etc/passwd} che tramite il -sistema del \itindex{Name~Service~Switch} \textit{Name Service Switch} e sono -completamente generiche. Si noti però che non c'è una funzione che permetta di -impostare direttamente una password.\footnote{in realtà questo può essere - fatto ricorrendo a PAM, ma questo è un altro discorso.} Dato che POSIX non -prevede questa possibilità esiste un'altra interfaccia che lo fa, derivata da -SVID le cui funzioni sono riportate in tab.~\ref{tab:sys_passwd_func}. Questa -però funziona soltanto quando le informazioni sono mantenute su un apposito -file di \textsl{registro} di utenti e gruppi, con il formato classico di -\conffile{/etc/passwd} e \conffile{/etc/group}. +sistema del \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch} e +sono completamente generiche. Si noti però che non c'è una funzione che +permetta di impostare direttamente una password.\footnote{in realtà questo può + essere fatto ricorrendo a PAM, ma questo è un altro discorso.} Dato che +POSIX non prevede questa possibilità esiste un'altra interfaccia che lo fa, +derivata da SVID le cui funzioni sono riportate in +tab.~\ref{tab:sys_passwd_func}. Questa però funziona soltanto quando le +informazioni sono mantenute su un apposito file di \textsl{registro} di utenti +e gruppi, con il formato classico di \conffile{/etc/passwd} e +\conffile{/etc/group}. \begin{table}[htb] \footnotesize @@ -868,27 +870,27 @@ file di \textsl{registro} di utenti e gruppi, con il formato classico di \textbf{Funzione} & \textbf{Significato}\\ \hline \hline - \func{fgetpwent} & Legge una voce dal file di registro degli utenti + \funcm{fgetpwent} & Legge una voce dal file di registro degli utenti + specificato.\\ + \funcm{fgetpwent\_r}& Come la precedente, ma \index{funzioni!rientranti} + rientrante.\\ + \funcm{putpwent} & Immette una voce in un file di registro degli + utenti.\\ + \funcm{getpwent} & Legge una voce da \conffile{/etc/passwd}.\\ + \funcm{getpwent\_r} & Come la precedente, ma \index{funzioni!rientranti} + rientrante.\\ + \funcm{setpwent} & Ritorna all'inizio di \conffile{/etc/passwd}.\\ + \funcm{endpwent} & Chiude \conffile{/etc/passwd}.\\ + \funcm{fgetgrent} & Legge una voce dal file di registro dei gruppi specificato.\\ - \func{fgetpwent\_r}& Come la precedente, ma \index{funzioni!rientranti} - rientrante.\\ - \func{putpwent} & Immette una voce in un file di registro degli - utenti.\\ - \func{getpwent} & Legge una voce da \conffile{/etc/passwd}.\\ - \func{getpwent\_r} & Come la precedente, ma \index{funzioni!rientranti} - rientrante.\\ - \func{setpwent} & Ritorna all'inizio di \conffile{/etc/passwd}.\\ - \func{endpwent} & Chiude \conffile{/etc/passwd}.\\ - \func{fgetgrent} & Legge una voce dal file di registro dei gruppi - specificato.\\ - \func{fgetgrent\_r}& Come la precedente, ma \index{funzioni!rientranti} - rientrante.\\ - \func{putgrent} & Immette una voce in un file di registro dei gruppi.\\ - \func{getgrent} & Legge una voce da \conffile{/etc/group}.\\ - \func{getgrent\_r} & Come la precedente, ma \index{funzioni!rientranti} - rientrante.\\ - \func{setgrent} & Ritorna all'inizio di \conffile{/etc/group}.\\ - \func{endgrent} & Chiude \conffile{/etc/group}.\\ + \funcm{fgetgrent\_r}& Come la precedente, ma \index{funzioni!rientranti} + rientrante.\\ + \funcm{putgrent} & Immette una voce in un file di registro dei gruppi.\\ + \funcm{getgrent} & Legge una voce da \conffile{/etc/group}.\\ + \funcm{getgrent\_r} & Come la precedente, ma \index{funzioni!rientranti} + rientrante.\\ + \funcm{setgrent} & Ritorna all'inizio di \conffile{/etc/group}.\\ + \funcm{endgrent} & Chiude \conffile{/etc/group}.\\ \hline \end{tabular} \caption{Funzioni per la manipolazione dei campi di un file usato come @@ -1085,15 +1087,17 @@ sono un sovrainsieme di \code{utmp}. Le \acr{glibc} utilizzano già una versione estesa di \code{utmp}, che rende inutili queste nuove strutture; pertanto esse e le relative funzioni di -gestione (\func{getutxent}, \func{getutxid}, \func{getutxline}, -\func{pututxline}, \func{setutxent} e \func{endutxent}) sono ridefinite come +gestione (\funcm{getutxent}, \funcm{getutxid}, \funcm{getutxline}, +\funcm{pututxline}, \funcm{setutxent} e \funcm{endutxent}) sono ridefinite come sinonimi delle funzioni appena viste. +% TODO (verificare le funzioni di cui sopra ) + Come visto in sez.~\ref{sec:sys_user_group}, l'uso di strutture allocate staticamente rende le funzioni di lettura non \index{funzioni!rientranti} rientranti; per questo motivo le \acr{glibc} forniscono anche delle versioni -\index{funzioni!rientranti} rientranti: \func{getutent\_r}, \func{getutid\_r}, -\func{getutline\_r}, che invece di restituire un puntatore restituiscono un +\index{funzioni!rientranti} rientranti: \funcm{getutent\_r}, \funcm{getutid\_r}, +\funcm{getutline\_r}, che invece di restituire un puntatore restituiscono un intero e prendono due argomenti aggiuntivi. Le funzioni si comportano esattamente come le analoghe non \index{funzioni!rientranti} rientranti, solo che restituiscono il risultato all'indirizzo specificato dal primo argomento @@ -2293,7 +2297,7 @@ non \index{funzioni!rientranti} rientrante, per cui nel caso si usino i (quella riportata dalla pagina di manuale), che restituisce \code{int} al posto di \code{char *}, e che tronca la stringa restituita a \param{size}.} una apposita versione \index{funzioni!rientranti} rientrante -\func{strerror\_r}, il cui prototipo è: +\funcd{strerror\_r}, il cui prototipo è: \begin{prototype}{string.h} {char * strerror\_r(int errnum, char *buf, size\_t size)} @@ -2359,7 +2363,7 @@ completo del programma è allegato nel file \file{ErrCode.c} e contiene pure la gestione delle opzioni e tutte le definizioni necessarie ad associare il valore numerico alla costante simbolica. In particolare si è riportata la sezione che converte la stringa passata come argomento in un intero -(\texttt{\small 1--2}), controllando con i valori di ritorno di \func{strtol} +(\texttt{\small 1--2}), controllando con i valori di ritorno di \funcm{strtol} che la conversione sia avvenuta correttamente (\texttt{\small 4--10}), e poi stampa, a seconda dell'opzione scelta il messaggio di errore (\texttt{\small 11--14}) o la macro (\texttt{\small 15--17}) associate a quel codice.