Under Construction

Anzeigen von utmp-Dateien mit /usr/sbin/acct/fwtmp

Für die Anzeige des Inhaltes von utmp-Dateien bietet das Accounting Fileset bos.acct das Kommando fwtmp(1). Das Kommando arbeitet als Filter, d.h. es liest Daten über die Standard-Eingabe und liefert diese über die Standard-Ausgabe zurück. Durch Eingabe-Umleitung können die Daten einer beliebigen Datei im utmp-Format gelesen und ausgegeben werden:

# /usr/sbin/acct/fwtmp </etc/utmp
                        system boot   2     0 0000 0000 1627365291                                  Tue Jul 27 07:54:51 CEST 2021
                        run-level 2   1     0 0062 0123 1637671886                                  Tue Nov 23 13:51:26 CET 2021
         securityboot                 8 6881756 0000 0000 1627365291                                  Tue Jul 27 07:54:51 CEST 2021

         rc                           8 6160852 0000 0000 1627365392                                  Tue Jul 27 07:56:32 CEST 2021
         rcemgr                       8 6619396 0000 0000 1627365397                                  Tue Jul 27 07:56:37 CEST 2021
         fbcheck                      8 5702114 0000 0000 1627365392                                  Tue Jul 27 07:56:32 CEST 2021
srcmstr  srcmstr                      5 5702116 0000 0000 1627365392                                  Tue Jul 27 07:56:32 CEST 2021
         rctcpip                      8 6684958 0000 0000 1627365397                                  Tue Jul 27 07:56:37 CEST 2021

cron     cron                         5 8257832 0000 0000 1627365435                                  Tue Jul 27 07:57:15 CEST 2021

user1   pts/0          pts/0         8 23462344 0015 175346 1634226431                                  Thu Oct 14 17:47:11 CEST 2021
user2   pts/1          pts/1         7 24576272 0005 41223 1641906231 192.168.1.17                    Tue Jan 11 14:03:51 CET 2022
user2   pts/2          pts/2         8 24576272 0005 61627 1641901617                                  Tue Jan 11 12:46:57 CET 2022
user2   pts/3          pts/3         8 24576272 0006 32171 1641897701                                  Tue Jan 11 11:41:41 CET 2022
user3   pts/4          pts/4         7 23069024 0010 53046 1641799722 192.168.1.17                   Mon Jan 10 08:28:42 CET 2022
user1   pts/5          pts/5         8 8126888 0001 26624 1641834373                                  Mon Jan 10 18:06:13 CET 2022
user3   pts/6          pts/6         8 21627168 0007 54704 1641832922                                  Mon Jan 10 17:42:02 CET 2022
user2   pts/7          pts/7         8 35717576 0003 133242 1641829791                                  Mon Jan 10 16:49:51 CET 2022
#

Das Kommando kann nur von root oder einem Benutzer der Gruppe adm gestartet werden. Es werden alle Datensätze mit allen Feldern ausgegeben. Leere Felder werden als leere Zeichenkette ausgegeben und sind damit optisch nicht gut erkennbar, wie die Beispiel-Ausgabe oben gut zeigt. Die Felder der utmp-Struktur werden in der folgenden Reihenfolge ausgegbeben: ut_user, ut_id, ut_line, ut_type, ut_pid, ut_exit.e_termination, ut_exit.e_exit, ut_time (Sekunden seit 1.1.1970), ut_host und ut_time (Datum und Uhrzeit).

Hinweis: Die Felder ut_exit.e_termination und ut_exit.e_exit werden als oktale Werte ausgegeben!

Die Ausgabe von Benutzernamen (Feld ut_user) wird nach den ersten 8 Zeichen abgeschnitten. Mit der Option ‚-X‘ wird der komplette Benutzername ausgegeben, bis zu 255 Zeichen.

Für Einträge von Remote-Logins, z.B. mit SSH, wird der Rechnername oder die IP-Adresse des Remote-Systems im Feld ut_host abgespeichert. Standardmäßig werden nur die ersten 32 Zeichen angezeigt, was für IP-Adressen mehr als ausreichend ist, aber für lange FQDNs eventuell nicht ausreicht. Durch Verwenden der Option ‚-L‘ wird der komplette Hostname ausgegeben, bis zu 255 Zeichen.

Per Default erwartet fwtmp(1) als Eingabe binäre Datensätze im utmp-Format und gibt diese im ASCII-Format wieder aus. Über Optionen kann die Arbeitsweise aber auch geändert werden:

-i : Als Eingabe werden utmp-Datensätze im ASCII-Format erwartet.

-c: Die Ausgabe liefert binäre utmp-Datensätze.

Durch Kombination der beiden Optionen kann vom ASCII-Format in das binäre Format konvertiert werden. Dies wird in seltenen Fällen verwendet um defekte Einträge in einer utmp-Datei zu korrigieren. Dazu wird die Datei zunächst eingelesen und im ASCII-Format in einer temporären Datei abgespeichert. Die temporäre Datei kann dann mit einem Editor bearbeitet werden. Und letztlich wird die editierte ASCII-Datei mit Hilfe der Optionen ‚-i‘ und ‚-c‘ gelesen, in das binäre Format konvertiert und dann abgespeichert:

# /usr/sbin/acct/fwtmp </etc/utmp >/tmp/utmp.ascii
# vi /tmp/utmp.ascii
# /usr/sbin/acct/fwtmp -ic </tmp/utmp.ascii >/etc/utmp
#

Neben fwtmp(1) gibt es eine ganze Reihe von weiteren Kommandos die Dateien im utmp-Format lesen können, wie z.B. who(1) oder last(1). Diese suchen allerdings gezielt nach bestimmten Datensätzen und geben dann auch nur diese aus. Der Vorteil von fwtmp(1) besteht darin das wirklich alle Datensätze gelesen und ausgegeben werden. Dies bietet in einigen Situationen einen großen Vorteil. In nachfolgenden Kapiteln werden aber auch die Kommandos who(1), last(1) und andere besprochen.