File: utmp.5

package info (click to toggle)
man-pages-it 0.3.0-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,256 kB
  • ctags: 20
  • sloc: makefile: 150; sed: 1
file content (228 lines) | stat: -rw-r--r-- 9,624 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
.\" Copyright (c) 1993 Michael Haardt (michael@cantor.informatik.rwth-aachen.de), Fri Apr  2 11:32:09 MET DST 1993
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\" 
.\" Modified Sun Jul 25 10:44:50 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Thu Feb 26 16:08:49 MET 1995 by Michael Haardt
.\" Modified Sat Jul 20 14:39:03 MET DST 1996 by Michael Haardt
.\" Modified Wed Jul  2 20:20:53 ART 1997 by Nicols Lichtmaier <nick@debian.org>
.\"
.\" Traduzione in italiano di Giovanni Bortolozzo <borto@dei.unipd.it>
.\" Settembre 1996
.\" Aggiornamento a man-pages-1.15 di Alessandro Rubini (rubini@linux.it)
.\" Febbraio 1998
.\" Aggiornamento a man-pages-1.20 di Ottavio G. Rizzo (otto@mast.queensu.ca)
.\" Giugno 1998
.\"
.\" " for hilit19
.TH UTMP 5 "2 luglio 1997" "Linux" "Linux Programmer's Manual"
.SH NOME
utmp, wtmp \- registri dei login
.SH SINTASSI
#include <utmp.h>
.SH DESCRIZIONE
Il file
.B utmp
permette di scoprire informazioni su chi sta usando attualmente il
sistema. Ci possono essere pi utenti che stanno usando il sistema
di quelli riportati, poich non tutti i programmi usano
registrazioni utmp.
.PP
\fB Attenzione:\fP \fButmp\fP non deve essere scrivibile, in quanto
molti programmi di sistema dipendono (stupidamente) dalla sua
integrit. Si rischia che vengano contraffatti i file di log del
sistema e che il sistema sia modificato se si lascia \fButmp\fP
scrivibile a qualsiasi utente.
.PP
Il file  una sequenza di voci con la seguente struttura dichiarata
nel file di include (si noti che questa  solo una delle numerose
definizioni in giro; i dettagli dipendono dalla versione di libc:
.RS
.nf
.sp
.ta 3i
#define UT_UNKNOWN      0
#define RUN_LVL         1
#define BOOT_TIME       2
#define NEW_TIME        3
#define OLD_TIME        4
#define INIT_PROCESS    5
#define LOGIN_PROCESS   6
#define USER_PROCESS    7
#define DEAD_PROCESS    8
#define ACCOUNTING     9

#define UT_LINESIZE     12
#define UT_NAMESIZE     32
#define UT_HOSTSIZE     256

struct exit_status {
  short int e_termination;     /* process termination status.  */
  short int e_exit;    /* process exit status.  */
};

struct utmp {
  short ut_type;        /* type of login */
  pid_t ut_pid;         /* pid of login process */
  char ut_line[UT_LINESIZE];    /* device name of tty \- "/dev/" */
  char ut_id[4];        /* init id or abbrev. ttyname */
  char ut_user[UT_NAMESIZE];    /* user name */
  char ut_host[UT_HOSTSIZE];    /* hostname for remote login */
  struct exit_status ut_exit;  /* The exit status of a process
          marked as DEAD_PROCESS. */
  long ut_session;     /* session ID, used for windowing*/
  struct timeval ut_tv;        /* time entry was made.  */
  int32_t ut_addr_v6[4];       /* IP address of remote host.  */
  char pad[20];        /* Reserved for future use.  */
};

/* Per compatibilit con le versioni precedenti */
#define ut_name ut_user
#ifndef _NO_UT_TIME
#define ut_time ut_tv.tv_sec
#endif
#define ut_xtime ut_tv.tv_sec
#define ut_addr ut_addr_v6[0]
.sp
.fi
.RE
Questa struttura da il nome del file speciale associato con il
terminale utente, il nome di login dell'utente, e l'ora di login
nel formato di 
.IR time (2).
I campi stringa sono terminati con \fB'\e0'\fP se sono pi corti della
dimensione del campo.
.PP
Le prime voci del file sono il risultato di \fIinit\fP(8) quando
esegue \fIinittab\fP(5).  Prima che una voce sia eseguita, per,
\fIinit\fP(8) pulisce il file utmp assegnando il valore
\fBDEAD_PROCESS\fP a \fBut_type\fP, pulendo \fBut_user\fP,
\fBut_host\fP e \fBut_time\fP con byte nulli per ogni registrazione
il cui \fBut_type\fP non sia \fBDEAD_PROCESS\fP o \fBRUN_LVL\fP, e
quelle per cui non esistono processi con PID \fBut_pid\fP.
Se non si trovano registrazioni vuoti con la
\fBut_id\fP necessaria, init ne crea una nuova. Poi assegna
\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.
.PP
Il processo \fIgetty\fP(8) ricerca le voci tramite il PID, cambia
\fBut_type\fP perch contenga \fBLOGIN_PROCESS\fP, aggiorna
\fBut_time\fP, assegna \fBut_line\fP e aspetta che venga stabilita una
connessione. Il processo \fIlogin\fP(8) modifica il file dopo
aver autenticato un utente: cambia \fBut_type\fP perch valga
\fBUSER_PROCESS\fP, aggiorna
\fBut_time\fP e assegna valori a \fBut_host\fP e \fBut_addr\fP.
In base al comportamento di \fIgetty\fP(8) e \fIlogin\fP(8),
le registrazioni possono essere indirizzate da
\fBut_line\fP invece del metodo preferibile, \fBut_pid\fP.
.PP
Quando \fIinit\fP(8) scopre che un processo ha terminato,
ricerca la sua voce utmp tramite
\fBut_pid\fP, assegna il valore \fBDEAD_PROCESS\fP  a \fBut_type\fP
e pulisce \fBut_user\fP, \fBut_host\fP e \fBut_time\fP, assegnandogli
dei byte nulli.
.PP
\fIxterm\fP(1) e altri emulatori di terminale creano direttamente una
registrazione \fBUSER_PROCESS\fP e generano il campo \fBut_id\fP
usando le ultime due lettere di \fB/dev/ttyp\fP\fI%c\fP, oppure usando
\fBp\fP\fI%d\fP per periferiche \fB/dev/pts/\fP\fI%d\fP. Se trovano
una registrazione \fBDEAD_PROCESS\fP per l'identificativo scelto la
riciclano, altrimenti creano una nuova registrazione.  Se possono ,
questi programmi marcano la voce come \fBDEAD_PROCESS\fP quando
terminano,  consigliabile anche che azzerino \fBut_line\fP,
\fBut_time\fP, \fBut_user\fP e \fBut_host\fP.
.PP
\fIxdm\fP(8) non dovrebbe creare registrazioni utmp, perch non
ci sono terminali assegnati al programma. Permettergli di creare
una registrazione risulterebbe in alcuno problemi, come:
``finger: can not stat /dev/machine.dom''.  Il programma, per, dovrebbe
creare voci wtmp, proprio come fa \fIftpd\fP(8).
.PP
Il programma \fItelnetd\fP(8) predispone una voce \fBLOGIN_PROCESS\fP
e lascia il resto del lavoro a \fIlogin\fP(8) come al solito.  Dopo la
fine della sessione telnet, \fItelnetd\fP(8) pulisce utmp nel modo
descritto.
.PP
Il file \fBwtmp\fP registra tutti i login e i logout. Il suo formato 
esattamente come quello di \fButmp\fP con l'eccezione che un nome utente
nullo indica il logout nel terminale associato. Inoltre, il nome del
terminale \fB"~"\fP con nome utente \fB"shutdown"\fP o \fB"reboot"\fP
indica uno shutdown o reboot e la coppia di nomi di terminale
\fB"|"\fP/\fB"}"\fP registra la vecchia/nuova ora del sistema quando
il comando \fIdate(1)\fP la cambia. \fBwtmp\fP  mantenuto da
\fIlogin\fP(1), \fIinit\fP(1) e alcuni tipi di \fIgetty\fP(1). Nessuno
di questi programmi crea il file, perci se viene la registrazione
rimane disabilitata.
.SH FILE
/var/adm/utmp
.br
/var/adm/wtmp
.SH "CONFORME A"
Le voci utmp di Linux non sono conformi n a v7/BSD n a SYSV: sono
un misto delle due. v7/BSD ha meno campi, ed  importante il fatto
che manchi del campo
\fBut_type\fP, cosa che  fa si che i programmi nativi tipo v7/BSD
mostrino le voci relative a sessioni terminate. 
Inoltre non esiste un file di configurazione che allochi le voci
per le sessioni. BSD si comporta in questo modo perch gli manca
il campo
\fBut_id\fP.  In Linux (come in SYSV), il campo \fBut_id\fP di una
registrazione non cambier mai una volta creato, il che riserva
la voce senza bisogno di un file di configurazione.
La cancellazione di \fBut_id\fP pu risultare in corse critiche che portino
a voci di utmp corrotte e, potenzialmente, a buchi di sicurezza.
La cancellazione dei campi menzionati riempiendoli di byte nulli non
 richiesta dalla semantica SYSV, ma permette di far girare molti
programmi che suppongono semantiche di tipo BSD e che non modificano
utmp. Linux usa le convenzioni BSD per il contenuto delle righe del file
come documentato sopra.  
.PP
SYSV usa solo il campo ``type'' per marcare le righe e registra
messaggi informativi come \fB"new time"\fP nel campo
``line''. \fBUT_UNKNOWN\fP sembra essere una invenzione di Linux.
SYSV non ha i campi \fBut_host\fP e \fBut_addr\fP.
.PP
A differenza di vari
altri sistemi, dove la registrazione in utmp pu essere disabilitata
cancellando il file,  utmp deve sempre esistere in Linux.
Se si vuole disabilitare il comando \fIwho\fP(1) basta togliere il
permesso di lettura al file utmp.
.PP
Si noti che lo struct di utmp  cambiato tra libc5 e libc6. Di conseguenza, 
un programma che usi il vecchio struct di libc5 altera
.IR /var/run/utmp " e/o " /var/log/wtmp .

.SH RESTRIZIONI
Il formato del file dipende dalla macchina, perci si raccomanda di
modificarlo solo macchine della stessa architettura di quella su cui
il file  stato creato.
.SH BACHI
Questa pagina di manuale si basa su quella di libc5, ora le cose
potrebbero funzionare diversamente.
.SH "VEDERE ANCHE"
.BR ac (1),
.BR date (1),
.BR getutent (3),
.BR init (8),
.BR last (1),
.BR login (1),
BR updwtmp (3),
.BR who (1)