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)
|