Detutmp fil giver en mulighed for at opdage oplysninger om, hvem der bruger systemet. Der kan være flere brugere, der bruger systemet, fordi ikke alle programmer bruger udmp logging.
Advarsel: utmp må ikke skrives, fordi mange systemprogrammer (tåbeligt) afhænger af dets integritet. Du risikerer fejlfindte systemlogfiler og ændringer af systemfiler, hvis du forladerutmpskrivbar til enhver bruger.
Filen er en sekvens af poster med følgende struktur angivet i inkluderingsfilen (bemærk at dette kun er en af flere definitioner rundt; detaljer afhænger af versionen af libc):
#define UT_UNKNOWN 0 #define RUN_LVL 1 #defineret BOOT_TIME 2 #define NEW_TIME 3 #define OLD_TIME 4 #defineret INIT_PROCESS 5 #defineret LOGIN_PROCESS 6 #define USER_PROCESS 7 #define DEAD_PROCESS 8 #defineret REGNSKAB 9 #defineret UT_LINESIZE 12 #defineret UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * proces opsigelsesstatus. * / kort int e_exit; / * proces exit status. * /}; struct utmp {kort ud_type; / * type login * / pid_t ut_pid; / * pid af loginprocessen * / char ud_line UT_LINESIZE; / * enhedens navn på tty - "/ dev /" * / char ud_id 4; / * init id eller forkortet. ttyname * / char ud_user UT_NAMESIZE; / * brugernavn * / char ud_host UT_HOSTSIZE; / * værtsnavn for eksternt login * / struct exit_status ut_exit; / * Afslutningsstatus for en proces markeret som DEAD_PROCESS. * / lang ud_session; / * session ID, der anvendes til vinduer * / struct timeval ut_tv; / * Tidspunktet blev foretaget. * / int32_t ut_addr_v6 4; / * IP-adresse for fjernhost. * / char pad 20; / * Reserveret til fremtidig brug. * /}; / * Backward kompatibilitet hacks. * / #define ud_name ud_user #ifndef _NO_UT_TIME #define ut_time ud_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ud_addr_v6 0
Denne struktur giver navnet på den særlige fil, der er knyttet til brugerens terminal, brugerens loginnavn og tidspunktet for login i form aftid(2). Strengfelter opsiges af'' hvis de er kortere end markens størrelse.
De første poster, der nogensinde er oprettet, er resultatet af i det (8) behandling inittab (5). Før en post behandles, dog, i det (8) rydder udmp ved at indstilleut_type tilDEAD_PROCESS, rydningut_user, ut_host, ogut_time med null bytes for hver post somut_type er ikkeDEAD_PROCESS ellerRUN_LVL og hvor ingen proces med PIDut_pid eksisterer. Hvis der ikke er nogen tom rekord med det nødvendigeut_id kan findes, init skaber en ny. Det sætterut_id fra inittab,ut_pid ogut_time til de nuværende værdier, ogut_type tilINIT_PROCESS.
getty (8) lokaliserer indgangen af pid, ændringerut_type tilLOGIN_PROCESS, ændringerut_time, sætut_line, og venter på, at forbindelsen etableres. Log på (8), efter at en bruger er blevet godkendt, ændresut_type tilUSER_PROCESS, ændringerut_time, og sætut_host ogut_addr. Kommer an på getty (8) og Log på (8), kan optegnelser lokaliseres afut_line i stedet for det foretrukneut_pid.
Hvornår i det (8) konstaterer, at en proces er ophørt, lokaliserer den sin UTMP-indgang vedut_pid, sætut_type tilDEAD_PROCESS, og rydderut_user, ut_host ogut_time med null bytes.
xterm (1) og andre terminalemulatorer skaber direkte enUSER_PROCESS optage og generereut_id ved at bruge de to sidste bogstaver af/ Dev / ttyp % c eller ved at brugep % d til/ dev / pts / % d . Hvis de finder enDEAD_PROCESS for dette id genbruger de det, ellers skaber de en ny post. Hvis de kan, vil de markere det somDEAD_PROCESS på spændende og det anbefales at de nuller ut_line,ut_time, ut_user, ogut_host såvel.
xdm (8) bør ikke oprette en UTMP-post, fordi der ikke er nogen tildelt terminal. At lade det oprette en vil resultere i fejl, som f.eks. 'Finger: kan ikke stat /dev/machine.dom'. Det skal oprette wtmp-indgange, dog ligesom ftpd (8) gør.
telnetd (8) opretter aLOGIN_PROCESS indrejse og efterlader resten til Log på (8) som sædvanlig. Når telnet-sessionen er afsluttet, telnetd (8) rydder udmp på den beskrevne måde.
Detwtmp Fil registrerer alle logins og logouts. Dens format er nøjagtigt somutmp bortset fra at et nul brugernavn angiver en logout på den tilknyttede terminal. Endvidere er terminalenavnet'~'med brugernavn"lukke ned" eller"Genstarte" angiver en systemafbrydelse eller genstart og parret af terminalnavne'|'/'}' logger den gamle / nye systemtid når dato (1) ændrer det.wtmp opretholdes af Log på (1), i det (1) og nogle versioner af getty (1). Ingen af disse programmer opretter filen, så hvis den fjernes, er optagelsen slået fra.