Deutmp bestand stelt iemand in staat informatie te ontdekken over wie momenteel het systeem gebruikt. Mogelijk gebruiken meer gebruikers het systeem momenteel, omdat niet alle programma's utmp-logging gebruiken.
Waarschuwing: utmp mag niet beschrijfbaar zijn, omdat veel systeemprogramma's (dwaas) afhankelijk zijn van de integriteit ervan. U riskeert vervalste systeemlogbestanden en wijzigingen van systeembestanden als u weggaatutmpbeschrijfbaar voor elke gebruiker.
Het bestand is een reeks items met de volgende structuur gedeclareerd in het include-bestand (merk op dat dit slechts een van de verschillende definities is, details zijn afhankelijk van de versie van libc):
#define UT_UNKNOWN 0 #define RUN_LVL 1 #define BOOT_TIME 2 #define NEW_TIME 3 #define OLD_TIME 4 #define INIT_PROCESS 5 #define LOGIN_PROCESS 6 #define USER_PROCESS 7 #define DEAD_PROCESS 8 #define ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int etermination; / * beëindiging status verwerken. * / short int e_exit; / * procesuitgangsstatus. * /}; struct utmp {short ut_type; / * type login * / pid_t ut_pid; / * pid of login process * / char ut_line UT_LINESIZE; / * apparaatnaam van tty - "/ dev /" * / char ut_id 4; / * init id of afkorting. ttyname * / char ut_user UT_NAMESIZE; / * gebruikersnaam * / char ut_host UT_HOSTSIZE; / * hostnaam voor inloggen op afstand * / struct exit_status ut_exit; / * De exitstatus van een proces gemarkeerd als DEAD_PROCESS. * / lange ut_session; / * sessie-ID, gebruikt voor windowing * / struct timeval ut_tv; / * tijdsinvoer werd gemaakt. * / int32_t ut_addr_v6 4; / * IP-adres van externe host. * / char pad 20; /* Gereserveerd voor toekomstig gebruik. * /}; / * Backwards-compatibiliteits-hacks. * / #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 0
Deze structuur geeft de naam van het speciale bestand dat is gekoppeld aan de terminal van de gebruiker, de inlognaam van de gebruiker en het tijdstip van aanmelden in de vorm vantijd(2). String-velden worden beëindigd door' ' als ze korter zijn dan de grootte van het veld.
De eerste ingangen die ooit zijn gemaakt, zijn het resultaat van in het (8) verwerking inittab (5). Voordat een item wordt verwerkt, in het (8) ruimt utmp op door in te stellenut_type naarDEAD_PROCESSopruimenut_user, ut_host, enut_time met nul bytes voor elke record dieut_type is nietDEAD_PROCESS ofRUN_LVL en waar geen proces met PIDut_pid bestaat. Als er geen lege record met de benodigdeut_id kan worden gevonden, init maakt een nieuwe. Het gaat oput_id van de inittab,ut_pid enut_time naar de huidige waarden, enut_type naarINIT_PROCESS.
getty (8) lokaliseert de invoer door de pid, wijzigingenut_type naarLOGIN_PROCESS, veranderingenut_time, setsut_lineen wacht tot de verbinding tot stand is gebracht. Log in (8), nadat een gebruiker is geverifieerd, wijzigingenut_type naarUSER_PROCESS, veranderingenut_timeen setsut_host enut_addr. Afhankelijk van getty (8) en Log in (8), records kunnen worden gevonden doorut_line in plaats van de voorkeurut_pid.
Wanneer in het (8) vindt dat een proces is afgesloten, het lokaliseert zijn utmp-invoer doorut_pid, setsut_type naarDEAD_PROCESS, en wistut_user, ut_host enut_time met nul bytes.
xterm (1) en andere terminal-emulators maken direct eenUSER_PROCESS registreer en genereer deut_id door de laatste twee letters van te gebruiken/ Dev / ttyp % c of door te gebruikenp % d voor/ Dev / pts / % d . Als ze een vindenDEAD_PROCESS voor deze id recyclen ze het, anders creëren ze een nieuw item. Als ze kunnen, markeren ze het alsDEAD_PROCESS bij het verlaten en wordt geadviseerd dat ze nietig zijn ut_line,ut_time, ut_user, enut_host ook.
xdm (8) zou geen Umpmp-record moeten maken, omdat er geen toegewezen terminal is. Door er een te maken, ontstaan er fouten, zoals 'finger: can not stat /dev/machine.dom'. Het zou echter wtmp-entries moeten maken, net zoals ftpd (8) doet.
telnetd (8) stelt eenLOGIN_PROCESS binnenkomst en laat de rest aan Log in (8) zoals gewoonlijk. Nadat de telnet-sessie is geëindigd, telnetd (8) ruimt utmp op de beschreven manier op.
Dewtmp bestand registreert alle aanmeldingen en logouts. Het formaat is precies hetzelfdeutmp behalve dat een lege gebruikersnaam een uitlog betekent op de bijbehorende terminal. Verder de naam van de terminal'~'met gebruikersnaam"stilgelegd" of"Reboot" geeft een systeemuitschakeling of reboot en het paar terminalnamen aan'|'/'}' logt het oude / nieuwe systeem in wanneer datum (1) verandert het.wtmp wordt onderhouden door Log in (1), in het (1), en sommige versies van getty (1). Geen van deze programma's maakt het bestand aan, dus als het wordt verwijderd, is het bijhouden van gegevens uitgeschakeld.