utmp umožňuje nájsť informácie o tom, kto v súčasnosti používa systém. V súčasnosti môže systém používať viac používateľov, pretože nie všetky programy používajú protokol utmp.
Výstraha: utmp nesmie byť zapisovateľná, pretože veľa systémových programov (pošetilo) závisí od ich integrity. Riskujete falošné záznamy systému a modifikácie systémových súborov, ak odídeteutmpzapisovateľný každému používateľovi.
Súbor je sekvencia položiek s nasledujúcou štruktúrou deklarovanou v súbore zahrnúť (všimnite si, že toto je len jedna z niekoľkých definícií okolo, detaily závisia od verzie libc):
#define UT_UNKNOWN 0 # vymedziť RUN_LVL 1 # vymedziť BOOT_TIME 2 # vymedziť NEW_TIME 3 # vymedziť OLD_TIME 4 # vymedziť INIT_PROCESS 5 # vymedziť LOGIN_PROCESS 6 # vymedziť USER_PROCESS 7 # vymedziť DEAD_PROCESS 8 # vymedziť ÚČTOVANIE 9 # vymedziť UT_LINESIZE 12 # definovať UT_NAMESIZE 32 #define UT_HOSTSIZE 256 štruktúra exit_status {short int etermination; / * stav ukončenia procesu. * / krátky int e_exit; / * proces ukončenie stavu. * /}; štrukt utmp {krátka ut_type; / * typ prihlásenia * / pid_t ut_pid; / * pid prihlasovacieho procesu * / char ut_line UT_LINESIZE; / * názov zariadenia tty - "/ dev /" * / char ut_id 4; / * init id alebo skratka. ttyname * / char ut_user UT_NAMESIZE; / * užívateľské meno * / char ut_host UT_HOSTSIZE; / * názov hostiteľa pre vzdialené prihlásenie * / struct exit_status ut_exit; / * Stav ukončenia procesu označený ako DEAD_PROCESS. * / long ut_session; / * ID relácie, použitý pre okná * / struct timeval ut_tv; / * bola zadaná časová lehota. * / int32_t ut_addr_v6 4; / * IP adresa vzdialeného hostiteľa. * / podložka 20; / * Vyhradené pre budúce použitie. * /}; / * Spätné kompatibility hacks. * / #definovať ut_name ut_user #ifndef _NO_UT_TIME # vymedziť ut_time ut_tv.tv_sec #endif # vymedziť ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 0
Táto štruktúra uvádza názov špeciálneho súboru priradeného k terminálu používateľa, prihlasovacie meno používateľa a čas prihlásenia vo formečas(2). Polia reťazca sú ukončené' ' ak sú kratšie ako veľkosť poľa.
Prvé záznamy, ktoré boli kedy vytvorené, sú výsledkom init (8) inittab (5). Pred spracovaním záznamu však, init (8) vyčistí utmp nastavenímut_type naDEAD_PROCESS, zúčtovanieut_user, ut_host, aut_time s nulovými bajtami pre každý záznam, ktorýut_type nie jeDEAD_PROCESS aleboRUN_LVL a kde nie je žiadny proces s PIDut_pid existuje. Ak žiadny prázdny záznam s potrebnýmiut_id možno nájsť, init vytvorí nový. Nastavuje saut_id od inittab,ut_pid aut_time na aktuálne hodnoty aut_type naINIT_PROCESS.
Getty (8) vyhľadá záznam pid, zmení saut_type naLOGIN_PROCESS, zmenyut_time, sadyut_linea čaká na vytvorenie spojenia. Prihlásiť sa (8), po overení používateľa, sa zmeníut_type naUSER_PROCESS, zmenyut_time, a nastaveniaut_host aut_addr, Záleží na Getty (8) a Prihlásiť sa (8), záznamy môžu byť umiestnené dout_line namiesto toho, ktorý je vhodnejšíut_pid.
Kedy init (8) zistí, že proces opustil, vyhľadá svoj záznam utmput_pid, sadyut_type naDEAD_PROCESS, a vymažeut_user, ut_host aut_time s nulovými bajtami.
xterm (1) a ostatné terminálové emulátory priamo vytvárajú aUSER_PROCESS zaznamenávať a generovaťut_id pomocou posledných dvoch písmen z/ Dev / ttyp % c alebo použitímp % d pre/ Dev / pts / % d , Ak nájdu aDEAD_PROCESS pre toto id, recyklujú to, inak vytvoria nový záznam. Ak môžu, označia to akoDEAD_PROCESS pri odchode a odporúča sa, aby boli neplatné ut_line,ut_time, ut_user, aut_host tiež.
xdm (8) by nemal vytvoriť záznam utmp, pretože neexistuje žiadny priradený terminál. Ak ho vytvoríte, výsledkom budú chyby, ako napríklad "prst: nemôže stať" /dev/machine.dom ". Mal by vytvárať položky wtmp, ale rovnako ako ftpd (8).
telnetd (8) nastaví aLOGIN_PROCESS a zvyšok opustí Prihlásiť sa (8) ako obvykle. Po skončení relácie telnet, telnetd (8) čistí utmp popísaným spôsobom.
wtmp súbor zaznamenáva všetky prihlásenia a odhlásenia. Jeho formát je presne rovnakýutmp okrem toho, že nulové užívateľské meno označuje odhlásenie na príslušnom termináli. Navyše názov terminálu'~'s užívateľským menom"vypnúť" alebo"Restart" znamená vypnutie alebo reštartovanie systému a pár názvov terminálov'|'/'}' zaznamená starý / nový systémový čas dátum (1) ho zmení.wtmp je udržiavaný Prihlásiť sa (1), init (1) a niektoré verzie súborov Getty (1). Žiadny z týchto programov nevytvára súbor, takže ak je odstránený, nahrávanie sa vypne.













