Imported tab->space correction by redhat
[infodrom/manpages-de] / man5 / utmp.5
1 .\" Copyright (c) 1993 Michael Haardt (michael@cantor.informatik.rwth-aachen.de), Fri Apr  2 11:32:09 MET DST 1993
2 .\"
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.
7 .\"
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.
12 .\"
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.
17 .\"
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,
21 .\" USA.
22 .\" 
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 Sat Aug 10 15:26:25 MET DST 1996 by Michael Haardt
27 .\"
28 .TH UTMP 5 "10. August 1996" "Linux" "Dateiformate"
29 .SH BEZEICHNUNG
30 utmp, wtmp \- login Einträge
31 .SH ÜBERSICHT
32 .B "#include <utmp.h>"
33 .SH BESCHREIBUNG
34 Die
35 .I utmp
36 Datei gibt Auskunft darüber, wer das System im Moment benutzt.  Da nicht
37 alle Programme
38 .I utmp
39 benutzen, kann es jedoch noch mehr Benutzer im System geben.
40
41 .B Warnung:
42 .I utmp
43 darf nicht allgemein schreibbar sein, weil viele Systemprogramme von
44 der Korrektheit dieser Datei abhängig sind.  Falls Sie
45 .I utmp
46 für jeden schreibbar lassen, riskieren Sie falsche Einträge in
47 Systemlogdateien und Modifikationen von Systemdateien.
48
49 Die Datei besteht aus einer Sequenz von Einträgen der folgenden Struktur,
50 die in der Include-Datei deklariert ist:
51 .RS
52 .nf
53 .sp
54 .ta 3i
55 #define UT_UNKNOWN      0
56 #define RUN_LVL         1
57 #define BOOT_TIME       2
58 #define NEW_TIME        3
59 #define OLD_TIME        4
60 #define INIT_PROCESS    5
61 #define LOGIN_PROCESS   6
62 #define USER_PROCESS    7
63 #define DEAD_PROCESS    8
64
65 #define UT_LINESIZE     12
66 #define UT_NAMESIZE     8
67 #define UT_HOSTSIZE     16
68
69 struct utmp {
70   short ut_type;        /* Typ des Eintrags */
71   pid_t ut_pid;         /* Prozessnummer */
72   char ut_line[UT_LINESIZE];    /* Gerätename \- "/dev/" */
73   char ut_id[2];        /* init id or abgek. Leitungsname */
74   time_t ut_time;       /* Zeit */
75   char ut_user[UT_NAMESIZE];    /* Benutzer login-Name */
76   char ut_host[UT_HOSTSIZE];    /* Rechner-Name bei remote login */
77   long ut_addr; /* IP Adresse des remote Rechners */
78 };
79 .sp
80 .fi
81 .RE
82 Diese Struktur enthält den Namen der Gerätedatei für das Terminal des
83 Benutzers, seinen Login-Namen und den Zeitpunkt im Format von
84 .BR time (2),
85 an dem er sich eingeloggt hat.  Zeichenketten sind mit \fB'\e0'\fP
86 terminiert, falls sie kürzer als das Feld sind, das sie enthält.
87
88 Die ersten Einträge, die je erstellt werden, entstehen durch
89 .BR init (8),
90 der
91 .BR inittab (5)
92 verarbeitet.  Bevor ein solcher Eintrag verarbeitet wird, räumt
93 .BR init (8)
94 .I utmp
95 auf, indem bei jedem Eintrag dessen
96 .BR ut_type " nicht"
97 .BR DEAD_PROCESS " oder " BRUN_LVL 
98 ist und für den kein Prozess mit der PID
99 .BR ut_pid " existiert,"
100 .BR ut_type " auf " DEAD_PROCESS
101 gesetzt wird und
102 .BR ut_user ","
103 .BR ut_host " und "
104 .BR ut_time
105 mit Null-Bytes gefüllt werden.  Falls kein leerer Eintrag mit der benötigten
106 .B ut_id
107 gefunden wird, erstellt init einen.  Dabei wird
108 .B ut_id
109 von inittab übernommen,
110 .BR ut_pid " und " ut_time
111 auf die aktuellen Werte und
112 .BR ut_type " auf " INIT_PROCESS " gesetzt wird."
113
114 .BR getty (8)
115 findet den Eintrag mittels der PID, ändert
116 .BR ut_type " zu " LOGIN_PROCESS ", ändert " ut_time ", setzt " ut_line
117 und wartet darauf, dass eine Verbindung hergestellt wird.  Nachdem
118 .BR login (8)
119 einen Benutzer authentifizieren konnte, ändert es
120 .BR ut_type " zu " USER_PROCESS ", ändert " ut_time " und setzt "
121 .BR ut_host " und " ut_addr ".  Je nach "
122 .BR getty (8)
123 und
124 .BR login (8)
125 könnten Einträge auch mittels
126 .BR ut_line " anstatt der vorzuziehenden " ut_pid " gefunden werden."
127
128 Wenn
129 .BR init (8)
130 feststellt, dass ein Prozess beendet wurde, lokalisiert es den
131 entsprechenden utmp Eintrag mittels
132 .BR ut_pid ", setzt"
133 .BR ut_type " auf " DEAD_PROCESS " und füllt "
134 .BR ut_user ,
135 .BR ut_host " und " ut_time " mit Null-Bytes."
136
137 .BR xterm (1)
138 und andere Terminal-Emulatoren erstellen direkt einen
139 .B USER_PROCESS
140 Eintrag und erzeugen die
141 .BR ut_id " entweder durch die letzten beiden Zeichen von"
142 .BI /dev/ttyp %c
143 oder durch
144 .BI p %d
145 bei
146 .BI /dev/pts/ %d.
147 Falls sie einen
148 .B DEAD_PROCESS
149 Eintrag für diese ID finden, wird er wieder benutzt, ansonsten wird ein
150 neuer Eintrag erstellt.  Falls möglich, markieren sie vor Beendigung den
151 Eintrag als
152 .BR DEAD_PROCESS " und es wird geraten, dass sie "
153 .BR ut_line ", " ut_time ", " ut_user " und " ut_host " mit Nullen füllen."
154
155 .BR xdm (8)
156 sollte keinen utmp Eintrag erstellen, weil es kein
157 zugeordnetes Terminal gibt.  Falls es trotzdem gemacht wird, werden
158 .\" FIXME testen, dass es wirklich cannot heißt, nicht can not
159 Fehlermeldungen wie finger: cannot stat /dev/machine.dom die Folge
160 sein.  Es sollte jedoch ein wtmp Eintrag erzeugt werden, genau wie es
161 auch bei
162 .BR ftpd (8)
163 geschieht.
164
165 .BR telnetd (8)
166 erzeugt einen
167 .BR LOGIN_PROCESS " Eintrag und lässt"
168 .BR login (8)
169 den Rest erledigen.  Nachdem die telnet-Sitzung beendet ist, markiert
170 .BR telnetd (8)
171 den
172 .I utmp
173 Eintrag in der oben
174 beschriebenen Art und Weise.
175
176 Die
177 .I wtmp
178 Datei zeichnet alle An- und Abmeldungen im System auf.  Das Format gleicht
179 .BR utmp ,
180 mit der Ausnahme, dass ein leerer Benutzername eine Abmeldung vom angegebenen
181 Terminal anzeigt.  Weiterhin bedeutet die Terminalleitung \fB"~"\fP mit dem
182 Benutzernamens \fB"shutdown"\fP oder \fB"reboot"\fP ein Herunterfahren bzw.
183 den Neustart des Systems und das Paar der Terminalleitungen
184 \fB"|"\fP/\fB"}"\fP zeichnet die alte/neue Systemzeit auf, wenn diese durch
185 .BR date (1)
186 geändert wird.
187 .I wtmp
188 wird durch
189 .BR login (1),
190 .BR init (8)
191 und
192 .BR getty (1)
193 verwaltet.  Keins dieser Programme erstellt die Datei, so dass, falls sie
194 gelöscht wird, keine Aufzeichnungen mehr gemacht werden.
195 .SH DATEIEN
196 .I /var/run/utmp
197 .br
198 .I /var/log/wtmp
199 .SH "KONFORM ZU"
200 Linux utmp Einträge sind weder zu v7/BSD noch zu SYSV konform: Sie sind
201 eine Vereinigung von beidem.  v7/BSD hat weniger Felder, vor allem fehlt
202 .BR ut_type ,
203 was ursprüngliche v7/BSD-ähnliche Programme veranlaßt, tote und
204 login-Einträge anzuzeigen.  Weiterhin gibt es keine Konfigurationsdatei,
205 die jeder Session eine Eintragsnummer zuordnet.  Dies wird in BSD gemacht,
206 weil dort
207 .BR ut_id " fehlt.  In Linux (wie in SYSV), wird das "
208 .B ut_id
209 Feld eines Eintrags nach dem initialen Setzen nie wieder geändert,
210 wodurch diese Eintragnummer ohne jede Konfigurationsdatei reserviert wird.
211 .B ut_id
212 zu löschen führt zu race conditions und resultiert in beschädigten utmp
213 Einträgen und potenziellen Sicherheitslöchern.  Die SYSV-Semantik verlangt
214 nicht, die oben angegebenen Felder mit Null-Bytes zu löschen, aber es
215 erlaubt viele Programme zu benutzen, die die BSD-Semantik benutzen und
216 utmp nicht verändern.  Wie beschrieben, benutzt Linux die BSD-Konventionen
217 für Leitungsnamen.  SYSV benutzt nur das Typ-Feld um solche Einträge zu
218 markieren und zeichnet Meldungen wie \fB"new time"\fP im Leitungs-Feld
219 auf.  SYSV hat ein Feld mehr, um den Exit-Status von beendeten Prozessen
220 aufzuzeichnen.
221 .B UT_UNKNOWN
222 scheint eine Linux Erfindung zu sein.  In Linux gibt es keinen
223 .B ACCOUNTING
224 Typ.  SYSV hat kein
225 .BR ut_host " oder " ut_addr
226 Feld.  Anders als bei verschiedenen anderen Systemen, wo utmp
227 Aufzeichnungen durch Löschen der Datei abgeschaltet werden können, muss
228 utmp bei Linux immer vorhanden sein.  Falls
229 .BR who (1)
230 verboten werden soll, dann kann man utmp einfach
231 nicht allgemein lesbar machen.
232 .SH EINSCHRÄNKUNGEN
233 Das Dateiformat ist maschinengebunden.  Es wird daher empfohlen, dass
234 es nur auf der Architektur verarbeitet wird, auf der es erstellt wurde.
235 .SH "SIEHE AUCH"
236 .BR ac (1),
237 .BR date (1),
238 .BR last (1),
239 .BR login (1),
240 .BR who (1),
241 .BR getutent (3),
242 .BR init (8).
243