Deutmp filen låter dig upptäcka information om vem som använder systemet. Det kan hända att fler användare använder systemet, för inte alla program använder UTMP-loggning.
Varning: utmp får inte skrivas, eftersom många systemprogram (dumt) beror på dess integritet. Du riskerar felaktiga systemloggfiler och ändringar av systemfiler om du lämnarutmpskrivbar till någon användare.
Filen är en sekvens av poster med följande struktur deklarerad i inkluderingsfilen (observera att detta bara är en av flera definitioner runt, detaljerna beror på versionen av 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 #definierad USER_PROCESS 7 #define DEAD_PROCESS 8 #definera REDOVISNING 9 #definierad UT_LINESIZE 12 #definierad UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {kort int e_termination; / * Process avslutningsstatus. * / kort int e_exit; / * bearbeta utgångsstatus. * /}; struct utmp {kort ut_type; / * typ av inloggning * / pid_t ut_pid; / * PID för inloggningsprocessen * / char ut_line UT_LINESIZE; / * Enhetsnamn TTY - "/ dev /" * / char ut_id 4; / * init id eller förkorta. ttyname * / char ut_user UT_NAMESIZE; / * användarnamn * / char ut_host UT_HOSTSIZE; / * värdnamn för fjärrloggning * / struct exit_status ut_exit; / * Avslutningsstatus för en process markerad som DEAD_PROCESS. * / lång ut_session; / * session ID, används för windowing * / struct timeval ut_tv; / * Tidpunkten gjordes. * / int32_t ut_addr_v6 4; / * IP-adress för fjärrvärden. * / karbonad 20; / * Reserverad för framtida användning. * /}; / * Bakåtkompatibilitetshackar. * / #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
Denna struktur ger namnet på den speciella filen som är associerad med användarens terminal, användarens inloggningsnamn och inloggningstidpunkten i form avtid(2). Strängfält avslutas av' ' om de är kortare än fältets storlek.
De första poster som någonsin skapats resulterar från i det (8) bearbetning inittab (5). Innan en post behandlas, i det (8) rensar utmp genom att ställa inut_type tillDEAD_PROCESS, rensningut_user, ut_host, ochut_time med nollbyte för varje post somut_type är inteDEAD_PROCESS ellerRUN_LVL och där ingen process med PIDut_pid existerar. Om ingen tom post med den behövsut_id kan hittas, init skapar en ny. Det sätterut_id från inittab,ut_pid ochut_time till de aktuella värdena, ochut_type tillINIT_PROCESS.
getty (8) lokaliserar posten av pid, ändringarut_type tillLOGIN_PROCESS, förändringarut_time, uppsättningarut_line, och väntar på att anslutningen etableras. logga in (8), efter att en användare har blivit autentiserad, ändrasut_type tillUSER_PROCESS, förändringarut_time, och uppsättningarut_host ochut_addr. Beroende på getty (8) och logga in (8), poster kan placeras avut_line istället för att föredraut_pid.
När i det (8) finner att en process har gått ut, lokaliserar den sin UTMP-post medut_pid, uppsättningarut_type tillDEAD_PROCESS, och rensarut_user, ut_host ochut_time med null byte.
xterm (1) och andra terminalemulatorer skapar direkt enUSER_PROCESS spela in och skapaut_id genom att använda de två sista bokstäverna i/ Dev / ttyp % c eller genom att användap % d för/ dev / pts / % d . Om de hittar enDEAD_PROCESS För det här IDet återvinns det, annars skapar de en ny post. Om de kan, kommer de att markera det somDEAD_PROCESS på spännande och det rekommenderas att de nollställs ut_line,ut_time, ut_user, ochut_host också.
xdm (8) bör inte skapa en UTMP-post, eftersom det inte finns någon tilldelad terminal. Att låta det skapa en kommer att resultera i fel, till exempel "finger: kan inte stat /dev/machine.dom". Det borde skapa wtmp-poster, dock, precis som ftpd (8) gör.
telnetd (8) sätter upp aLOGIN_PROCESS inträde och lämnar resten till logga in (8) som vanligt. När telnet-sessionen slutar, telnetd (8) rensar utmp på det beskrivna sättet.
Dewtmp filen registrerar alla inloggningar och loggar. Dess format är exakt somutmp förutom att ett noll användarnamn anger en utloggning på den tillhörande terminalen. Vidare är terminalnamnet'~'med användarnamn"stänga av" eller"Omstart" indikerar systemavstängning eller omstart och paret av terminalnamn'|'/'}' loggar den gamla / nya systemtiden när datum (1) ändrar det.wtmp upprätthålls av logga in (1), i det (1), och några versioner av getty (1). Varken av dessa program skapar filen, så om den tas bort är registrering avstängd.