Under Construction

Das utmp-Format

Die Dateien /etc/utmp und /var/adm/wtmp (als auch /etc/security/failedlogin) verwenden das utmp-Format für die Speicherung von Datensätzen. Die Definition des Formats findet man in der C-Header-Datei /usr/include/utmp.h:

struct utmp
  {
    char ut_user[256] ;     /* User login name */
    char ut_id[14] ;        /* /etc/inittab id */
    char ut_line[64] ;      /* device name (console, lnxx) */
    pid_t ut_pid ;          /* process id */
    short ut_type ;         /* type of entry */
    time64_t ut_time ;      /* time entry was made */
    struct exit_status
      {
        short e_termination ;   /* Process termination status */
        short e_exit ;      /* Process exit status */
      }
    ut_exit ;           /* The exit status of a process
                     * marked as DEAD_PROCESS.
                     */
    char ut_host[256] ;     /* host name */
    int __dbl_word_pad;     /* for double word alignment */
    int __reservedA[2];
    int __reservedV[6];
  } ;

Es gibt 9 verschiedene Typen von Einträgen. Um welchen konkreten Typ es sich bei einem gegebenen Eintrag handelt wird über das Feld ut_type bestimmt. Die folgenden Typen werden verwendet (ebenfalls in /usr/include/utmp.h zu finden):

/*  Definitions for ut_type                     */

#define EMPTY       0
#define RUN_LVL     1
#define BOOT_TIME   2
#define OLD_TIME    3
#define NEW_TIME    4
#define INIT_PROCESS    5   /* Process spawned by "init" */
#define LOGIN_PROCESS   6   /* A "getty" process waiting for login */
#define USER_PROCESS    7   /* A user process */
#define DEAD_PROCESS    8
#define ACCOUNTING  9

Für Prozesse, die von init(1) gestartet werden, generiert init(1) Einträge mit dem Wert 5 (INIT_PROCESS) in /etc/utmp und /var/adm/utmp. Ein gestarteter getty(1)-Prozess generiert Einträge mit dem Wert 6 (LOGIN_PROCESS) und ein Benutzer-Login führt dann zu einem Eintrag mit dem Typ 7 (USER_PROCESS). Loggt sich ein Benutzer schließlich wieder aus, wird ein Eintrag mit dem Typ 8 (DEAD_PROCESS) generiert und in dem Feld e_exit wird der Exit-Status des Prozesses festgehalten. Die gelisteten Typen werden später genauer beleuchtet. Jeder Eintrag besitzt einen Zeitstempel (ut_time) der angibt, wann der Eintrag generiert wurde.

Neben dem Typ-Feld ut_type gibt es die folgenden Felder:

    • ut_user: Bei Prozessen der Name des zugehörigen Benutzers.
    • ut_id: Für Prozesse die von init(1) gestartet wurden, die ID des inittab(4) Eintrags.
    • ut_line: Der Device-Name des Terminals für Logins.
    • ut_pid: Die PID des gestarteten Prozesses.
    • ut_type: Der Type des Eintrags.
    • ut_time: Zeitstempel des Eintrags.
    • ut_exit: Für Einträge mit Typ 8 (DEAD_PROCESS) der Exit-Status des Prozesses.
    • ut_host: Für Remote-Logins der Name oder die IP-Adresse des Remote-Hosts.