Skip to main content

Ako používať Unix Command Utmp v Linuxe

Anonim

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.