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.