Skip to main content

Kako uporabljati Unix ukaz Utmp v Linuxu

Anonim

Theutmp datoteka omogoča, da odkrijejo informacije o tem, kdo trenutno uporablja sistem. Morda je več uporabnikov, ki trenutno uporabljajo sistem, ker vsi programi ne uporabljajo logiranja utmp.

Opozorilo: utmp ne sme biti mogoče zapisati, ker je veliko sistemskih programov (neumno) odvisno od njene integritete. V primeru, da zapustite, imate tvegane napake sistemskih log datotek in spremembe sistemskih datotekutmppisati za vsakega uporabnika.

Datoteka je zaporedje vnosov z naslednjo strukturo, prijavljeno v datoteki za vključitev (upoštevajte, da je to le ena od več definicij okrog, podrobnosti so odvisne od različice 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 {kratko int e_termination; / * status zaključka procesa. * / kratko int e_exit; / * status izhoda procesa. * /}; struct utmp {kratka ut_type; / * vrsta prijave * / pid_t ut_pid; / * pid prijavnega postopka * / char ut_line UT_LINESIZE; / * ime naprave tty - "/ dev /" * / char ut_id 4; / * init id ali abbrev. ttyname * / char ut_user UT_NAMESIZE; / * uporabniško ime * / char ut_host UT_HOSTSIZE; / * ime gostitelja za oddaljeno prijavo * / struct exit_status ut_exit; / * Stanje izhoda procesa, označenega kot DEAD_PROCESS. * / dolg ut_session; / * seji ID, ki se uporablja za okno * / struct timeval ut_tv; / * vnos časa. * / int32_t ut_addr_v6 4; / * IP naslov oddaljenega gostitelja. * / char pad 20; / * Rezervirano za prihodnjo uporabo. * /}; / * Nazaj združljivost 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

Ta struktura podaja ime posebne datoteke, ki je povezana s uporabniškim terminalom, uporabniškim imenom za prijavo in časom prijave v oblikičas(2). Nizna polja končajo z'' če so krajši od velikosti polja.

Prvi vnosi, ki so bili kdaj ustvarjeni, so rezultat v (8) obdelavo inittab (5). Preden se obdeluje vnos, v (8) čiščenje utmp z nastavitvijout_type doDEAD_PROCESS, čiščenjeut_user, ut_host, inut_time z ničelnimi bajti za vsak zapis, ki jeut_type niDEAD_PROCESS aliRUN_LVL in kjer ni procesa s PIDut_pid obstaja. Če ni praznega zapisa s potrebnimut_id je mogoče najti, init ustvari novo. Nastaviut_id iz inittaba,ut_pid inut_time na trenutne vrednosti inut_type doINIT_PROCESS.

Getty (8) najde vnos s strani pid, spremembeut_type doLOGIN_PROCESS, spremembeut_time, določaut_line, in čaka na vzpostavitev povezave. Vpiši se (8), potem ko je bil uporabnik potrjen, se spremeniut_type doUSER_PROCESS, spremembeut_time, in določaut_host inut_addr. Odvisno od Getty (8) in Vpiši se (8), se lahko evidence nahajajo dout_line namesto boljeut_pid.

Kdaj v (8) ugotovi, da je proces zapustil, poišče svoj vtmp vstop zut_pid, določaut_type doDEAD_PROCESS, in počistiut_user, ut_host inut_time z ničelnimi bajti.

xterm (1) in drugi terminalski emulatorji neposredno ustvarijo aUSER_PROCESS zabeležite in ustvariteut_id z uporabo zadnjih dveh črk/ dev / ttyp % c ali z uporabostr % d za/ dev / pts / % d . Če najdejoDEAD_PROCESS za to id, jih reciklirajo, sicer ustvarijo nov vnos. Če bodo, bodo to označili kotDEAD_PROCESS ob izhodu in svetuje, da so nič ut_line,ut_time, ut_user, inut_host tudi.

xdm (8) ne sme ustvariti zapisa utmp, ker ni dodeljenega terminala. Če pustite, da ga ustvarite, bo prišlo do napak, na primer »prst: ne morete stat /dev/machine.dom«. Moral bi ustvariti wtmp vnose, čeprav, tako kot ftpd (8).

telnetd (8) postavlja aLOGIN_PROCESS vstop in ostalo ostane Vpiši se (8) kot običajno. Po zaključku seje telneta, telnetd (8) očisti utmp na opisani način.

Thewtmp datoteko zabeleži vse prijave in odjave. Njegova oblika je ravno všečutmp razen, da nično uporabniško ime označuje odjavo na povezanem terminalu. Poleg tega ime terminala'~'z uporabniškim imenom"ugasniti" ali"ponovni zagon" označuje zaustavitev sistema ali ponovni zagon in imena imen terminalov'|'/'}' se prijavi stari / novi sistemski čas datum (1) ga spremeni.wtmp vzdržuje Vpiši se (1), v (1) in nekatere različice Getty (1). Nobeden od teh programov ne ustvari datoteke, zato če je odstranjen, se vodenje evidenc izklopi.