Hauptindex | Abschnitt 5 | 日本語 | Optionen |
Warnung: utmp darf nicht allgemein schreibbar sein, weil viele Systemprogramme von der Korrektheit dieser Datei abhängig sind. Falls Sie utmp für jeden schreibbar lassen, riskieren Sie falsche Einträge in Systemlogdateien und Modifikationen von Systemdateien.
Die Datei besteht aus einer Sequenz von Einträgen der folgenden Struktur, die in der Include-Datei deklariert ist:
Diese Struktur enthält den Namen der Gerätedatei für das Terminal des Benutzers, seinen Login-Namen und den Zeitpunkt im Format von time(2), an dem er sich eingeloggt hat. Zeichenketten sind mit '\0' terminiert, falls sie kürzer als das Feld sind, das sie enthält.#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 UT_LINESIZE 12 #define UT_NAMESIZE 8 #define UT_HOSTSIZE 16
struct utmp { short ut_type; /* Typ des Eintrags */ pid_t ut_pid; /* Prozeßnummer */ char ut_line[UT_LINESIZE]; /* Gerätename - "/dev/" */ char ut_id[2]; /* init id or abgek. Leitungsname */ time_t ut_time; /* Zeit */ char ut_user[UT_NAMESIZE]; /* Benutzer login-Name */ char ut_host[UT_HOSTSIZE]; /* Rechner-Name bei remote login */ long ut_addr; /* IP Adresse des remote Rechners */ };
Die ersten Einträge, die je erstellt werden, entstehen durch init(8), der inittab(5) verarbeitet. Bevor ein solcher Eintrag verarbeitet wird, räumt init(8) utmp auf, indem bei jedem Eintrag dessen ut_type nicht DEAD_PROCESS oder BRUN_LVL ist und für den kein Prozeß mit der PID ut_pid existiert, ut_type auf DEAD_PROCESS gesetzt wird und ut_user, ut_host und ut_time mit Null-Bytes gefüllt werden. Falls kein leerer Eintrag mit der benötigten ut_id gefunden wird, erstellt init einen. Dabei wird ut_id von inittab übernommen, ut_pid und ut_time auf die aktuellen Werte und ut_type auf INIT_PROCESS gesetzt wird.
getty(8) [Englisch] findet den Eintrag mittels der PID, ändert ut_type zu LOGIN_PROCESS, ändert ut_time, setzt ut_line und wartet darauf, daß eine Verbindung hergestellt wird. Nachdem login(8) einen Benutzer authentifizieren konnte, ändert es ut_type zu USER_PROCESS, ändert ut_time und setzt ut_host und ut_addr. Je nach getty(8) [Englisch] und login(8) könnten Einträge auch mittels ut_line anstatt der vorzuziehenden ut_pid gefunden werden.
Wenn init(8) feststellt, daß ein Prozeß beendet wurde, lokalisiert es den entsprechenden utmp Eintrag mittels ut_pid, setzt ut_type auf DEAD_PROCESS und füllt ut_user, ut_host und ut_time mit Null-Bytes.
xterm(1) und andere Terminal-Emulatoren erstellen direkt einen USER_PROCESS Eintrag und erzeugen die ut_id entweder durch die letzten beiden Zeichen von /dev/ttyp%c oder durch p%d bei /dev/pts/%d. Falls sie einen DEAD_PROCESS Eintrag für diese ID finden, wird er wieder benutzt, ansonsten wird ein neuer Eintrag erstellt. Falls möglich, markieren sie vor Beendigung den Eintrag als DEAD_PROCESS und es wird geraten, daß sie ut_line, ut_time, ut_user und ut_host mit Nullen füllen.
xdm(8) sollte keinen utmp Eintrag erstellen, weil es kein zugeordnetes Terminal gibt. Falls es trotzdem gemacht wird, werden Fehlermledungen wie finger: can not stat /dev/machine.dom die Folge sein. Es sollte jedoch ein wtmp Eintrag erzeugt werden, genau wie es auch bei ftpd(8) [Englisch] geschieht.
telnetd(8) [Englisch] erzeugt einen LOGIN_PROCESS Eintrag und läßt login(8) den Rest erledigen. Nachdem die telnet-Sitzung beendet ist, markiert telnetd(8) [Englisch] den utmp Eintrag in der oben beschriebenen Art und Weise.
Die wtmp Datei zeichnet alle An- und Abmeldungen im System auf. Das Format gleicht utmp, mit der Ausnahme, daß ein leerer Benutzername eine Abmeldung vom angegebenen Terminal anzeigt. Weiterhin bedeutet die Terminalleitung "~" mit dem Benutzernamens "shutdown" oder "reboot" ein Herunterfahren bzw. den Neustart des Systems und das Paar der Terminalleitungen "|"/"}" zeichnet die alte/neue Systemzeit auf, wenn diese durch date(1) geändert wird. wtmp wird durch login(1), init(8) und getty(1) verwaltet. Keins dieser Programme erstellt die Datei, so daß, falls sie gelöscht wird, keine Aufzeichnungen mehr gemacht werden.
10. August 1996 | UTMP (5) | Linux |
Hauptindex | Abschnitt 5 | 日本語 | Optionen |
Bitte richten Sie Ihre Kommentare zu diesem Handbuch Seite Service, Ben Bullock. Privacy policy.