Skip to main content

WIE MAN: Verwendung des Unix Command Utmp unter Linux - 2021

How to Monitor User Login and System Restart Activities (Februar 2021).

Inhaltsverzeichnis:

Anonim

Dasutmp Datei ermöglicht es, Informationen darüber zu erhalten, wer das System derzeit verwendet. Möglicherweise verwenden derzeit mehr Benutzer das System, da nicht alle Programme die utmp-Protokollierung verwenden.

Warnung: utmp darf nicht beschreibbar sein, da viele Systemprogramme (töricht) von seiner Integrität abhängen. Sie riskieren gefälschte Systemprotokolldateien und Änderungen von Systemdateien, wenn Sie das System verlassenutmpfür jeden Benutzer schreibbar.

Die Datei ist eine Folge von Einträgen mit der folgenden Struktur, die in der Include-Datei deklariert ist (beachten Sie, dass dies nur eine von mehreren Definitionen ist; Details hängen von der Version von libc ab):

#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; / * Prozessbeendigungsstatus * / short int e_exit; / * Prozess-Exit-Status * /}; struct utmp {short ut_type; / * Art der Anmeldung * / pid_t ut_pid; / * pid des Anmeldeprozesses * / char ut_line UT_LINESIZE; / * Gerätename von tty - "/ dev /" * / char ut_id 4; / * init id oder abbrev. ttyname * / char ut_user UT_NAMESIZE; / * Benutzername * / char ut_host UT_HOSTSIZE; / * Hostname für die Remote-Anmeldung * / struct exit_status ut_exit; / * Der Exitstatus eines Prozesses, der als DEAD_PROCESS gekennzeichnet ist. * / long ut_session; / * Sitzungs-ID, verwendet für das Fenster * / struct timeval ut_tv; / * Zeiteintrag wurde gemacht. * / int32_t ut_addr_v6 4; / * IP-Adresse des Remote-Hosts. * / Zeichenblock 20; /* Reserviert für zukünftige Verwendung. * /}; / * Rückwärtskompatibilitäts-Hacks. * / #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_tv.tv_sec #endif #define ut_time_tv.tv_sec #define ut_addr_v6 0

Diese Struktur gibt den Namen der dem Endgerät des Benutzers zugeordneten speziellen Datei, den Anmeldenamen des Benutzers und den Zeitpunkt der Anmeldung in der Form von anZeit(2). String-Felder werden mit abgeschlossen'' wenn sie kürzer als die Feldgröße sind.

Die ersten Einträge, die jemals erstellt wurden, ergeben sich aus drin (8) Verarbeitung Inittab (5). Bevor jedoch ein Eintrag verarbeitet wird, drin (8) bereinigt utmp durch Einstellungut_type zuDEAD_PROCESSklärenut_user, ut_host, undut_time mit Nullbytes für jeden Datensatz, derut_type ist nichtDEAD_PROCESS oderRUN_LVL und wo kein Prozess mit PIDut_pid existiert. Wenn kein leerer Datensatz mit dem benötigtenut_id gefunden werden kann, erstellt init eine neue. Es legt festut_id vom inittab,ut_pid undut_time zu den aktuellen Werten undut_type zuINIT_PROCESS.

getty (8) lokalisiert den Eintrag anhand der PID, ändert sichut_type zuLOGIN_PROCESS, Änderungenut_timesetztut_lineund wartet auf den Verbindungsaufbau. Anmeldung (8) ändert sich, nachdem ein Benutzer authentifiziert wurdeut_type zuUSER_PROCESS, Änderungenut_timeund setztut_host undut_addr. Es hängt davon ab getty (8) und Anmeldung (8) können Datensätze gefunden werdenut_line anstelle des Vorzugsut_pid.

Wann drin (8) stellt fest, dass ein Prozess beendet wurde, und sucht seinen utmp-Eintrag mitut_pidsetztut_type zuDEAD_PROCESSund löschtut_user, ut_host undut_time mit null Bytes.

xterm (1) und andere Terminalemulatoren erstellen direkt aUSER_PROCESS aufnehmen und generierenut_id mit den letzten beiden Buchstaben von/ dev / ttyp % c oder mitp % d zum/ dev / pts / % d . Wenn sie eine findenDEAD_PROCESS Für diese ID wird sie recycelt, andernfalls wird ein neuer Eintrag erstellt. Wenn sie können, werden sie es als kennzeichnenDEAD_PROCESS beim Beenden und es wird empfohlen, dass sie null sind ut_line,ut_time, ut_user, undut_host auch.

xdm (8) sollte keinen utmp-Datensatz erstellen, da kein Terminal zugewiesen ist. Wenn Sie es erstellen lassen, führt dies zu Fehlern, z. B. 'finger: kann stat /dev/machine.dom' nicht. Es sollte aber wtmp-Einträge erstellen, genau wie ftpd (8) tut.

Telnetd (8) richtet einLOGIN_PROCESS Eintritt und überlässt den Rest Anmeldung (8) wie üblich. Nach dem Ende der Telnet-Sitzung Telnetd (8) bereinigt utmp auf die beschriebene Weise.

Daswtmp Datei zeichnet alle Anmeldungen und Abmeldungen auf. Das Format ist genau wieutmp außer, dass ein Nullbenutzername auf dem zugeordneten Terminal eine Abmeldung anzeigt. Weiterhin der Terminalname'~'mit Benutzername"ausschalten" oder"Neustart" gibt an, dass das System heruntergefahren oder neu gestartet wird, und das Terminalnamenpaar'|'/'}' protokolliert die alte / neue Systemzeit, wenn Datum (1) ändert es.wtmp wird von gepflegt Anmeldung (1), drin (1) und einige Versionen von getty (1). Keines dieser Programme erstellt die Datei. Wenn die Datei entfernt wird, wird die Aufzeichnung jedoch deaktiviert.