1
.\" Copyright (c) 1993 Michael Haardt (michael@cantor.informatik.rwth-aachen.de), Fri Apr 2 11:32:09 MET DST 1993
3
.\" This is free documentation; you can redistribute it and/or
4
.\" modify it under the terms of the GNU General Public License as
5
.\" published by the Free Software Foundation; either version 2 of
6
.\" the License, or (at your option) any later version.
8
.\" The GNU General Public License's references to "object code"
9
.\" and "executables" are to be interpreted as the output of any
10
.\" document formatting or typesetting system, including
11
.\" intermediate and printed output.
13
.\" This manual is distributed in the hope that it will be useful,
14
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
15
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
.\" GNU General Public License for more details.
18
.\" You should have received a copy of the GNU General Public
19
.\" License along with this manual; if not, write to the Free
20
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
23
.\" Modified Sun Jul 25 10:44:50 1993 by Rik Faith (faith@cs.unc.edu)
24
.\" Modified Thu Feb 26 16:08:49 MET 1995 by Michael Haardt
25
.\" Modified Sat Jul 20 14:39:03 MET DST 1996 by Michael Haardt
26
.\" Modified Wed Jul 2 20:20:53 ART 1997 by Nicol�s Lichtmaier <nick@debian.org>
28
.\" Traduzione in italiano di Giovanni Bortolozzo <borto@dei.unipd.it>
30
.\" Aggiornamento a man-pages-1.15 di Alessandro Rubini (rubini@linux.it)
32
.\" Aggiornamento a man-pages-1.20 di Ottavio G. Rizzo (otto@mast.queensu.ca)
36
.TH UTMP 5 "2 luglio 1997" "Linux" "Linux Programmer's Manual"
38
utmp, wtmp \- registri dei login
44
permette di scoprire informazioni su chi sta usando attualmente il
45
sistema. Ci possono essere pi� utenti che stanno usando il sistema
46
di quelli riportati, poich� non tutti i programmi usano
49
\fB Attenzione:\fP \fButmp\fP non deve essere scrivibile, in quanto
50
molti programmi di sistema dipendono (stupidamente) dalla sua
51
integrit�. Si rischia che vengano contraffatti i file di log del
52
sistema e che il sistema sia modificato se si lascia \fButmp\fP
53
scrivibile a qualsiasi utente.
55
Il file � una sequenza di voci con la seguente struttura dichiarata
56
nel file di include (si noti che questa � solo una delle numerose
57
definizioni in giro; i dettagli dipendono dalla versione di libc:
67
#define INIT_PROCESS 5
68
#define LOGIN_PROCESS 6
69
#define USER_PROCESS 7
70
#define DEAD_PROCESS 8
73
#define UT_LINESIZE 12
74
#define UT_NAMESIZE 32
75
#define UT_HOSTSIZE 256
78
short int e_termination; /* process termination status. */
79
short int e_exit; /* process exit status. */
83
short ut_type; /* type of login */
84
pid_t ut_pid; /* pid of login process */
85
char ut_line[UT_LINESIZE]; /* device name of tty \- "/dev/" */
86
char ut_id[4]; /* init id or abbrev. ttyname */
87
char ut_user[UT_NAMESIZE]; /* user name */
88
char ut_host[UT_HOSTSIZE]; /* hostname for remote login */
89
struct exit_status ut_exit; /* The exit status of a process
90
marked as DEAD_PROCESS. */
91
long ut_session; /* session ID, used for windowing*/
92
struct timeval ut_tv; /* time entry was made. */
93
int32_t ut_addr_v6[4]; /* IP address of remote host. */
94
char pad[20]; /* Reserved for future use. */
97
/* Per compatibilit� con le versioni precedenti */
98
#define ut_name ut_user
100
#define ut_time ut_tv.tv_sec
102
#define ut_xtime ut_tv.tv_sec
103
#define ut_addr ut_addr_v6[0]
107
Questa struttura da il nome del file speciale associato con il
108
terminale utente, il nome di login dell'utente, e l'ora di login
111
I campi stringa sono terminati con \fB'\e0'\fP se sono pi� corti della
112
dimensione del campo.
114
Le prime voci del file sono il risultato di \fIinit\fP(8) quando
115
esegue \fIinittab\fP(5). Prima che una voce sia eseguita, per�,
116
\fIinit\fP(8) pulisce il file utmp assegnando il valore
117
\fBDEAD_PROCESS\fP a \fBut_type\fP, pulendo \fBut_user\fP,
118
\fBut_host\fP e \fBut_time\fP con byte nulli per ogni registrazione
119
il cui \fBut_type\fP non sia \fBDEAD_PROCESS\fP o \fBRUN_LVL\fP, e
120
quelle per cui non esistono processi con PID \fBut_pid\fP.
121
Se non si trovano registrazioni vuoti con la
122
\fBut_id\fP necessaria, init ne crea una nuova. Poi assegna
123
\fBut_id\fP dal file inittab, assegna i valori correnti a \fBut_pid\fP e \fBut_time\fP e assegna \fBINIT_PROCESS\fP a \fBut_type\fP.
125
Il processo \fIgetty\fP(8) ricerca le voci tramite il PID, cambia
126
\fBut_type\fP perch� contenga \fBLOGIN_PROCESS\fP, aggiorna
127
\fBut_time\fP, assegna \fBut_line\fP e aspetta che venga stabilita una
128
connessione. Il processo \fIlogin\fP(8) modifica il file dopo
129
aver autenticato un utente: cambia \fBut_type\fP perch� valga
130
\fBUSER_PROCESS\fP, aggiorna
131
\fBut_time\fP e assegna valori a \fBut_host\fP e \fBut_addr\fP.
132
In base al comportamento di \fIgetty\fP(8) e \fIlogin\fP(8),
133
le registrazioni possono essere indirizzate da
134
\fBut_line\fP invece del metodo preferibile, \fBut_pid\fP.
136
Quando \fIinit\fP(8) scopre che un processo ha terminato,
137
ricerca la sua voce utmp tramite
138
\fBut_pid\fP, assegna il valore \fBDEAD_PROCESS\fP a \fBut_type\fP
139
e pulisce \fBut_user\fP, \fBut_host\fP e \fBut_time\fP, assegnandogli
142
\fIxterm\fP(1) e altri emulatori di terminale creano direttamente una
143
registrazione \fBUSER_PROCESS\fP e generano il campo \fBut_id\fP
144
usando le ultime due lettere di \fB/dev/ttyp\fP\fI%c\fP, oppure usando
145
\fBp\fP\fI%d\fP per periferiche \fB/dev/pts/\fP\fI%d\fP. Se trovano
146
una registrazione \fBDEAD_PROCESS\fP per l'identificativo scelto la
147
riciclano, altrimenti creano una nuova registrazione. Se possono ,
148
questi programmi marcano la voce come \fBDEAD_PROCESS\fP quando
149
terminano, � consigliabile anche che azzerino \fBut_line\fP,
150
\fBut_time\fP, \fBut_user\fP e \fBut_host\fP.
152
\fIxdm\fP(8) non dovrebbe creare registrazioni utmp, perch� non
153
ci sono terminali assegnati al programma. Permettergli di creare
154
una registrazione risulterebbe in alcuno problemi, come:
155
``finger: can not stat /dev/machine.dom''. Il programma, per�, dovrebbe
156
creare voci wtmp, proprio come fa \fIftpd\fP(8).
158
Il programma \fItelnetd\fP(8) predispone una voce \fBLOGIN_PROCESS\fP
159
e lascia il resto del lavoro a \fIlogin\fP(8) come al solito. Dopo la
160
fine della sessione telnet, \fItelnetd\fP(8) pulisce utmp nel modo
163
Il file \fBwtmp\fP registra tutti i login e i logout. Il suo formato �
164
esattamente come quello di \fButmp\fP con l'eccezione che un nome utente
165
nullo indica il logout nel terminale associato. Inoltre, il nome del
166
terminale \fB"~"\fP con nome utente \fB"shutdown"\fP o \fB"reboot"\fP
167
indica uno shutdown o reboot e la coppia di nomi di terminale
168
\fB"|"\fP/\fB"}"\fP registra la vecchia/nuova ora del sistema quando
169
il comando \fIdate(1)\fP la cambia. \fBwtmp\fP � mantenuto da
170
\fIlogin\fP(1), \fIinit\fP(1) e alcuni tipi di \fIgetty\fP(1). Nessuno
171
di questi programmi crea il file, perci� se viene la registrazione
178
Le voci utmp di Linux non sono conformi n� a v7/BSD n� a SYSV: sono
179
un misto delle due. v7/BSD ha meno campi, ed � importante il fatto
181
\fBut_type\fP, cosa che fa si che i programmi nativi tipo v7/BSD
182
mostrino le voci relative a sessioni terminate.
183
Inoltre non esiste un file di configurazione che allochi le voci
184
per le sessioni. BSD si comporta in questo modo perch� gli manca
186
\fBut_id\fP. In Linux (come in SYSV), il campo \fBut_id\fP di una
187
registrazione non cambier� mai una volta creato, il che riserva
188
la voce senza bisogno di un file di configurazione.
189
La cancellazione di \fBut_id\fP pu� risultare in corse critiche che portino
190
a voci di utmp corrotte e, potenzialmente, a buchi di sicurezza.
191
La cancellazione dei campi menzionati riempiendoli di byte nulli non
192
� richiesta dalla semantica SYSV, ma permette di far girare molti
193
programmi che suppongono semantiche di tipo BSD e che non modificano
194
utmp. Linux usa le convenzioni BSD per il contenuto delle righe del file
195
come documentato sopra.
197
SYSV usa solo il campo ``type'' per marcare le righe e registra
198
messaggi informativi come \fB"new time"\fP nel campo
199
``line''. \fBUT_UNKNOWN\fP sembra essere una invenzione di Linux.
200
SYSV non ha i campi \fBut_host\fP e \fBut_addr\fP.
203
altri sistemi, dove la registrazione in utmp pu� essere disabilitata
204
cancellando il file, utmp deve sempre esistere in Linux.
205
Se si vuole disabilitare il comando \fIwho\fP(1) basta togliere il
206
permesso di lettura al file utmp.
208
Si noti che lo struct di utmp � cambiato tra libc5 e libc6. Di conseguenza,
209
un programma che usi il vecchio struct di libc5 altera
210
.IR /var/run/utmp " e/o " /var/log/wtmp .
213
Il formato del file dipende dalla macchina, perci� si raccomanda di
214
modificarlo solo macchine della stessa architettura di quella su cui
215
il file � stato creato.
217
Questa pagina di manuale si basa su quella di libc5, ora le cose
218
potrebbero funzionare diversamente.