-Un altro insieme di funzioni utili è quello che permette di accedere ai dati
-del database di \textit{accounting} degli utenti, che mantiene la traccia di
-chi si è collegato al sistema e di che è correntemente collegato, insieme alle
-informazioni, per ciascun terminale, di chi ci è collegato, da che ora,
-dell'\acr{uid} della shell di login, ed una serie di altre informazioni
-relativa al sistema come il run-level, l'orario dell'ultimo riavvio, ed altre.
-
-Le informazioni sono tenute nei due file \file{/var/run/utmp} (per chi sta
-utilizzando il sistema al momento corrente) e \file{/var/log/wtmp} (per la
-storia dei login precedenti). Questi file non devono mai essere letti
-direttamente, ma le informazioni che contengono possono essere ricavate
-attraverso le opportune funzioni di libreria. Queste sono analoghe alle
-precedenti per il database delle password, solo che la struttura del database
-è molto più complessa, dato che contiene vari tipi di informazione.
-
-Le prime tre funzioni, \func{utmpname}, \func{setutent} e \func{endutent},
-servono a aprire e chiudere il database, e a specificare il file su cui esso è
-mantenuto (in caso questo non venga specificato viene usato il valore standard
-\macro{\_PATH\_UTMP} che è definito in \file{paths.h}. Il loro prototipi sono:
+Dato che ormai la gran parte delle distribuzioni di Linux utilizzano PAM, che
+come minimo usa almeno le \textit{shadow password} (quindi con delle modifiche
+rispetto al formato classico di \file{/etc/passwd}), le funzioni che danno la
+capacità scrivere delle voci nel database (cioè \func{putpwent} e
+\func{putgrent}) non permettono di effettuarne una specificazione in maniera
+completa. Per questo motivo l'uso di queste funzioni è deprecato in favore
+dell'uso di PAM, ci limiteremo pertanto ad elencarle in
+\tabref{tab:sys_passwd_func}, rimandando chi fosse interessato alle rispettive
+man page e al manuale delle \acr{glibc} per i dettagli del loro funzionamento.
+
+
+
+\subsection{Il database di accounting}
+\label{sec:sys_accounting}
+
+L'ultimo insieme di funzioni relative alla gestione del sistema che
+esamineremo è quello che permette di accedere ai dati del database di
+\textit{accounting}. In esso vengono mantenute una serie di informazioni
+storiche relative sia agli utenti che si sono collegati al sistema, (tanto per
+quelli correntemente collegati, che per la registrazione degli accessi
+precedenti), sia relative all'intero sistema, come il momento di lancio di
+processi da parte di \cmd{init}, il cambiamento dell'orologio di sistema, il
+cambiamento di runlevel o il riavvio della macchina.
+
+I dati vengono usualmente\footnote{questa è la locazione specificata dal
+ \textit{Linux Filesystem Hierarchy Standard}, adottato dalla gran parte
+ delle distribuzioni.} memorizzati nei due file \file{/var/run/utmp} e
+\file{/var/log/wtmp}. Quando un utente si collega viene aggiunta una voce a
+\file{/var/run/utmp} in cui viene memorizzato il nome di login, il terminale
+da cui ci si collega, l'\acr{uid} della shell di login, l'orario della
+connessione ed altre informazioni. La voce resta nel file fino al logout,
+quando viene cancellata e spostata in \file{/var/log/wtmp}.
+
+In questo modo il primo file viene utilizzato per registrare sta utilizzando
+il sistema al momento corrente, mentre il secondo mantiene la registrazione
+delle attività degli utenti. A quest'ultimo vengono anche aggiunte delle voci
+speciali per tenere conto dei cambiamenti del sistema, come la modifica del
+runlevel, il riavvio della macchina, ecc. Tutte queste informazioni sono
+descritte in dettaglio nel manuale delle \acr{glibc}.
+
+Questi file non devono mai essere letti direttamente, ma le informazioni che
+contengono possono essere ricavate attraverso le opportune funzioni di
+libreria. Queste sono analoghe alle precedenti (vedi
+\tabref{tab:sys_passwd_func}) usate per accedere al database degli utenti,
+solo che in questo caso la struttura del database di accounting è molto più
+complessa, dato che contiene diversi tipi di informazione.
+
+Le prime tre funzioni, \func{setutent}, \func{endutent} e \func{utmpname}
+servono rispettivamente a aprire e a chiudere il file che contiene il
+database, e a specificare su quale file esso viene mantenuto. I loro prototipi
+sono: