Le \acr{glibc} provvedono infine una serie di funzioni per la gestione dei due
-file standard \file{/etc/fstab} e \file{/etc/mtab}, che convenzionalmente sono
+pfile standard \file{/etc/fstab} e \file{/etc/mtab}, che convenzionalmente sono
usati in quasi tutti i sistemi unix per mantenere rispettivamente le
informazioni riguardo ai filesystem da montare e a quelli correntemente
montati. Le funzioni servono a leggere il contenuto di questi file in
database che sia tenuto su un file che abbia il formato classico di
\file{/etc/passwd}.
-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 (\func{putpwent} e \func{putgrent})
-non permettono di specificarle in maniera completa. Per questo motivo l'uso di
-queste funzioni è deprecato in favore dell'uso di PAM, per cui ci limitiamo a
-elencarle in \tabref{tab:sys_passwd_func}, rimandando chi fosse interessato
-alle man page e al manuale delle \acr{glibc} per i dettagli del funzionamento.
-
\begin{table}[htb]
\footnotesize
\centering
\label{tab:sys_passwd_func}
\end{table}
+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 (\func{putpwent} e \func{putgrent})
+non permettono di specificarle in maniera completa. Per questo motivo l'uso di
+queste funzioni è deprecato in favore dell'uso di PAM, per cui ci limitiamo a
+elencarle in \tabref{tab:sys_passwd_func}, rimandando chi fosse interessato
+alle man page e al manuale delle \acr{glibc} per i dettagli del funzionamento.
+
+
+
+\subsection{Il database di accounting}
+\label{sec:sys_accounting}
+
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
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 informazioni vengono mantenute 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}; la voce vi resta 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 storia delle
+attività degli utenti. A quest'ultimo vengono anche aggiunte delle voci
+speciali per tenere conto dei cambiamenti di runlevel, del riavvio della
+macchina, e di altri eventi di sistema.
+
+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 è
\funcdecl{struct utmp *getutent(void)}
Legge una voce dal dalla posizione corrente nel database.
-
+
\funcdecl{struct utmp *getutid(struct utmp *ut)}
- Esegue una ricerca dalla posizione corrente sulla base del contenuto di
- \param{ut}.
+ Ricerca una voce sul database in base al contenuto di \param{ut}.
\funcdecl{struct utmp *getutline(struct utmp *ut)}
Ricerca nel database la prima voce corrispondente ad un processo sulla linea
\label{fig:sys_utmp_struct}
\end{figure}
-Con \func{getutid} si può cercare la voce relativa ad uno specifico tipo di
-login o di runlevel, a seconda del valore del campo \var{ut\_type}
-dell'argomento \param{ut}; questo può assumere i valori riportati in
-
+Con \func{getutid} si può cercare una voce specifica, a seconda del valore del
+campo \var{ut\_type} dell'argomento \param{ut}. Questo può assumere i valori
+riportati in \tabref{tab:sys_ut_type}, quando assume i valori
+\macro{RUN\_LVL}, \macro{BOOT\_TIME}, \macro{OLD\_TIME}, \macro{NEW\_TIME},
+verrà restituito la prima voce che corrisponde al tipo determinato; quando
+invece assume i valori \macro{INIT\_PROCESS}, \macro{LOGIN\_PROCESS},
+\macro{USER\_PROCESS} o \macro{DEAD\_PROCESS} verrà restiuita la prima voce
+corripondente al valore del campo \var{ut\_id} specificato in \param{ut}.
\begin{table}[htb]
\footnotesize
\textbf{Funzione} & \textbf{Significato}\\
\hline
\hline
- \macro{EMPTY} & Non contiene informazioni valide. \\
- \macro{RUN_LVL} & Identica il runlevel del sistema. \\
- \macro{BOOT_TIME} & Identifica il tempo di avvio del sistema \\
- \macro{OLD_TIME} & Identifica quando è stato modificato l'orogio di
- sistema. \\
- \macro{NEW_TIME} & Identifica da qaunto è stato modificato il
- sistema. \\
- \macro{INIT_PROCESS} & Identifica un processo lanciato ad \cmd{init}. \\
- \macro{LOGIN_PROCESS}& Identifica un processo di login. \\
- \macro{USER_PROCESS} & Identifica un processo utente. \\
- \macro{DEAD_PROCESS} & Identifica un processo terminato. \\
- \macro{ACCOUNTING} & ??? \\
+ \macro{EMPTY} & Non contiene informazioni valide. \\
+ \macro{RUN\_LVL} & Identica il runlevel del sistema. \\
+ \macro{BOOT\_TIME} & Identifica il tempo di avvio del sistema \\
+ \macro{OLD\_TIME} & Identifica quando è stato modificato l'orologio di
+ sistema. \\
+ \macro{NEW\_TIME} & Identifica da quanto è stato modificato il
+ sistema. \\
+ \macro{INIT\_PROCESS} & Identifica un processo lanciato da \cmd{init}. \\
+ \macro{LOGIN\_PROCESS}& Identifica un processo di login. \\
+ \macro{USER\_PROCESS} & Identifica un processo utente. \\
+ \macro{DEAD\_PROCESS} & Identifica un processo terminato. \\
+ \macro{ACCOUNTING} & ??? \\
\hline
\end{tabular}
\caption{Classificazione delle voci del database di accounting a seconda dei
\label{tab:sys_ut_type}
\end{table}
-
+Infine \func{getutline} esegue la ricerca sulle voci che hanno \var{ut\_type}
+uguale a \macro{LOGIN\_PROCESS} o \macro{USER\_PROCESS}, restituendo la prima
+che corrisponde al valore di \var{ut\_line}. Lo stesso criterio di ricerca è
+usato da \func{pututline} per trovare uno spazio dove inserire la voce
+specificata, qualora non sia trovata la voce viene aggiunta in coda al
+database.
\section{Limitazione ed uso delle risorse}