Under Construction

utmp-Einträge von getty(1)

Für das Einloggen über serielle Schnittstellen und die System-Konsole gibt es in /etc/inittab Einträge die einen getty(1)-Prozeß starten. Hier ist als Beispiel der Eintrag für die Konsole:

# lsitab cons
cons:0123456789:respawn:/usr/sbin/getty /dev/console
#

Wie für alle anderen Einträge auch, erzeugt init(1) einen Eintrag mit Typ 5 (INIT_PROCESS):

# /usr/sbin/acct/fwtmp </etc/utmp | grep cons
cons     cons           vty0          5 12124356 0000 0000 1642068253                                  Thu Jan 13 11:04:13 2022
#

Sobald der getty-Prozeß gestartet ist, ändert dieser den Eintrag in /etc/utmp auf einen Eintrag mit Typ 6 (LOGIN_PROCESS) ab:

# /usr/sbin/acct/fwtmp </etc/utmp | grep cons
         cons           vty0          6 12124356 0000 0000 1642068374                                  Thu Jan 13 11:06:14 2022
#

Hinweis: Das geht normalerweise so schnell das man den Eintrag vom Typ 5 in der /etc/utmp nicht sieht, da er sofort überschrieben wird.

Hinweis: Der Eintrag mit Typ 6 wird nicht in /var/adm/wtmp hinzugefügt.

Das Feld ut_user (Benutzername) bleibt leer, die ID des inittab-Eintrags (hier cons) wird in ut_id eingetragen und der Gerätename der Schnittstelle (hier vty0) wird in ut_line eingetragen.

Auch für diese Einträge gibt es eine Option von who(1):

$ who -lH
Name         Line          Time     Activity       PID Hostname
LOGIN       vty0        Jan 13 11:06     0:05  12124356                 
$

Wird ein gültiger Benutzername und ein gültiges Passwort eingegeben, generiert getty(1) einen Eintrag vom Typ 7 (USER_PROCESS)

# /usr/sbin/acct/fwtmp </etc/utmp | grep cons
ize0h29  cons           vty0          7 12124356 0000 0000 1642068542                                  Thu Jan 13 11:09:02 2022
#

Dieser Eintrag überschreibt den Typ 6 Eintrag der von getty(1) oben beim Starten von getty in /etc/utmp eingetragen wurde. Im Unterschied zum Typ 6 Eintrag, der nur in /etc/utmp festgehalten wird, wird der Typ 7 (USER_PROCESS) Eintrag zusätzlich auch in /var/adm/wtmp festgehalten. Damit lassen sich Benutzer-Logins über die Historie in /var/adm/wtmp nachvollziehen.

Für Typ 7 Einträge wird der Benutzername des Benutzers der sich einloggt in das Feld ut_user eingetragen, die ID wie gehabt in ut_id und die Schnittstelle auf der der Login erfolgt in ut_line.

Für die Anzeige der Typ 7 Einträge kann entweder „who“ oder, für etwas mehr Informationen, „who –u“ verwendet werden:

$ who -uH
Name         Line          Time     Activity       PID Hostname
user1      vty0        Jan 13 11:09      .    12124356                
...
$

Loggt der Benutzer sich wieder aus, wird die Shell beendet, womit der von init(1) gestartete Prozeß (hier mit der PID 12124356) beendet wird. Entsprechend wird von init(1) ein Typ 8 (DEAD_PROCESS) Eintrag in /etc/utmp und /var/adm/wtmp geloggt. Wobei in /etc/utmp der Eintrag mit dem Typ 7 (USER_PROCESS) überschrieben wird:

# /usr/sbin/acct/fwtmp </etc/utmp | grep cons
         cons           vty0          8 12124356 0000 0000 1642068614                                  Thu Jan 13 11:10:14 2022
#

Hinweis: Der Eintrag in /etc/utmp ist normalerweise nicht zu sehen, da er durch die Aktion respawn sofort wieder durch einen Eintrag vom Typ 5 (INIT_PROCESS) überschrieben wird. Der Prozeß init(1) startet ja sofort einen neuen Prozeß, wenn der alte mit respawn gestartete Prozeß verstirbt. Der neue Prozeß hat natürlich eine andere PID.

Der beschriebene Ablauf von oben wiederholt sich dann.

Abschließend untersuchen wir noch den Fall von fehlerhaften Login-Versuchen.

Als erstes verwenden wir einen falschen Benutzernamen ‚invalid‘:

AIX Version 7
Copyright IBM Corporation, 1982, 2020.
Console login: invalid
invalid's Password: XXXXXXXX
You entered an invalid login name or password.

login:

In diesem Fall generiert getty(1) einen Eintrag vom Typ 7 (USER_PROCESS) in /etc/security/failedlogin:

# /usr/sbin/acct/fwtmp -X </etc/security/failedlogin

UNKNOWN_USER                vty0          7 12124358 0000 0000 1642069146                                  Thu Jan 13 11:19:06 2022
#

Als Benutzername (ut_user) wird die Zeichenkette “UNKNOWN_USER” verwendet, außerdem wird die Schnittstelle in ut_line festgehalten. Der Hinweis das es sich um einen durch init(1) gestarteten Eintrag handelt, fehlt. Die ID des inittab-Eintrags wird nicht in ut_id festgehalten.

Hinweis: Es werden keine Einträge in /etc/utmp und /var/adm/wtmp vorgenommen.

D.h. der Typ 6 (LOGIN_PROCESS) Eintrag in /etc/utmp bleibt bestehen!

Wir ein falsches Passwort eingegeben:

AIX Version 7
Copyright IBM Corporation, 1982, 2020.
Console login: user1
invalid's Password: XXXXXXXX
You entered an invalid login name or password.

login:

Wird ebenfalls nur ein Eintrag in /etc/security/failedlogin geloggt:

# /usr/sbin/acct/fwtmp -X </etc/security/failedlogin

user1                 vty0          7 12124358 0000 0000 1642069990                                  Thu Jan 13 11:33:10 2022
#

Für erfolgreiche Logins wird ein Typ 7 (USER_PROCESS) in /etc/utmp und /var/adm/wtmp geloggt. Für nicht erfolgreiche Logins wird nur ein Typ 7 Eintrag in /etc/security/failedlogin geloggt.