+L'ultimo argomento di questa sezione è quello che riguarda le funzioni
+utilizzate per gestire utenti e gruppi all'interno del sistema.
+Tradizionalmente l'informazione per la gestione di utenti e gruppi veniva
+tenuta tutta nei due file di testo \file{/etc/passwd} ed \file{/etc/group};
+oggi la maggior parte delle distribuzioni di Linux usa la libreria PAM (sigla
+che sta \textit{Pluggable Authentication Method}) che permette di separare
+completamente i meccanismi di gestione degli utenti (autenticazione,
+riconoscimento, ecc.) dalle modalità in cui i relativi dati vengono mantenuti.
+
+In questo paragrafo ci limiteremo comunque alle funzioni classiche per la
+lettura delle informazioni relative a utenti e gruppi previste dallo standard
+POSIX.1, che fanno riferimento a quanto memorizzato nei due file appena
+citati, il cui formato è descritto dalle relative pagine del manuale (cioè
+\cmd{man 5 passwd} e \cmd{man 5 group}).
+
+Per leggere le informazioni relative ad un utente si possono usare due
+funzioni, \func{getpwuid} e \func{getpwnam}, i cui prototipi sono:
+\begin{functions}
+ \headdecl{pwd.h}
+ \headdecl{sys/types.h}
+ \funcdecl{struct passwd *getpwuid(uid\_t uid)}
+
+ \funcdecl{struct passwd *getpwnam(const char *name)}
+
+ Restituiscono le informazioni relative alll'utente specificato.
+
+ \bodydesc{Le funzioni ritornano il puntatore alla struttura contenente le
+ informazioni in caso di successo e \macro{NULL} in caso di errore, nel
+ qual caso \var{errno} viene settata ad \macro{ENOMEM}.}
+\end{functions}
+
+Le due funzioni forniscono le informazioni memorizzate nel database degli
+utenti (che nelle versioni più recenti possono essere ottenute attraverso PAM)
+relative all'utente specificato attraverso il suo \acr{uid} o il nome di
+login, restituendo un puntatore ad una struttura di tipo \type{passwd}, (la
+cui definizione è riportata in \figref{fig:sys_passwd_struct}), allocata
+staticamente.
+
+\begin{figure}[!htb]
+ \footnotesize
+ \centering
+ \begin{minipage}[c]{15cm}
+ \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{}
+struct passwd {
+ char *pw_name; /* user name */
+ char *pw_passwd; /* user password */
+ uid_t pw_uid; /* user id */
+ gid_t pw_gid; /* group id */
+ char *pw_gecos; /* real name */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* shell program */
+};
+ \end{lstlisting}
+ \end{minipage}
+ \normalsize
+ \caption{La struttura \var{passwd} contenente le informazioni relative ad un
+ utente del sistema.}
+ \label{fig:sys_passwd_struct}
+\end{figure}
+
+
+\begin{figure}[!htb]
+ \footnotesize
+ \centering
+ \begin{minipage}[c]{15cm}
+ \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{}
+struct group {
+ char *gr_name; /* group name */
+ char *gr_passwd; /* group password */
+ gid_t gr_gid; /* group id */
+ char **gr_mem; /* group members */
+};
+ \end{lstlisting}
+ \end{minipage}
+ \normalsize
+ \caption{La struttura \var{passwd} contenente le informazioni relative ad un
+ utente del sistema.}
+ \label{fig:sys_passwd_struct}
+\end{figure}