Več o ukazu Linux - wtmp

Ime

utmp, wtmp - zapisi za prijavo

Povzetek

#include

Opis

Datoteka utmp omogoča odkrivanju informacij 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 (nespametno) odvisno od njegove celovitosti. V primeru, da zapustite utmp, lahko zapišete katerikoli uporabnik, lahko tvegate lažne sistemske datoteke in spremembe sistemskih datotek.

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 z uporabniškim terminalom, uporabniško ime za prijavo in časom prijave v obliki časa (2). Nizska polja se prekineta z »\ 0«, če so krajši od velikosti polja.

Prvi vnosi, kdaj so bili ustvarjeni, so rezultat init (8) obdelave inittab (5). Preden se obdelava vnese , se v init (8) čisti utmp, tako da nastavite ut_type na DEAD_PROCESS , odstranite ut_user , ut_host in ut_time z ničelnimi bajti za vsak zapis, ki ut_type ni DEAD_PROCESS ali RUN_LVL in kjer ni nobenega procesa s pid ut_pid . Če ni mogoče najti nobenega praznega zapisa z ustreznim ut_idom , init ustvari novo. Ut_id iz inittab, ut_pid in ut_time nastavi na trenutne vrednosti in ut_type na INIT_PROCESS .

getty (8) najde vnos s pomočjo pid, spremeni ut_type na LOGIN_PROCESS , spremeni ut_time , nastavi ut_line in čaka na vzpostavitev povezave. prijava (8), potem ko je uporabnik preveril pristnost, spremeni ut_type v USER_PROCESS , spremeni ut_time in nastavi ut_host in ut_addr . Odvisno od getty (8) in prijava (8), se lahko zapisi nahajajo po ut_line namesto želenega ut_pid .

Ko init (8) ugotovi, da je proces zapustil, locira svoj utmp vnos z ut_pid , nastavi ut_type na DEAD_PROCESS in počisti ut_user , ut_host in ut_time z ničelnimi bajti.

xterm (1) in drugi terminalski emulatorji neposredno ustvarijo zapis USER_PROCESS in ustvarjajo ut_id z uporabo zadnjih dveh črk / dev / ttyp % c ali z uporabo p % d za / dev / pts / % d . Če najdejo DEAD_PROCESS za to id, jih reciklirajo, sicer ustvarijo nov vnos. Če bodo, bodo ob izstopu označili kot DEAD_PROCESS in svetovali so, da so null ut_line , ut_time , ut_user in ut_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«. Ustvariti bi morali wtmp vnose, tako kot ftpd (8).

telnetd (8) nastavi vnos LOGIN_PROCESS in ostalo pusti, da se prijavite (8) kot ponavadi. Po koncu telnetne seje telnetd (8) očisti utmp na opisani način.

Datoteka wtmp zabeleži vse prijave in odjave. Njegova oblika je točno tako kot utmp, razen da nično uporabniško ime označuje odjavo na povezanem terminalu. Poleg tega ime terminala "~" z uporabniškim imenom "shutdown" ali "reboot" označuje zaustavitev sistema ali ponovni zagon in imenovana imena terminalov "|" / "}" prijavi stari / nov sistemski sistem, ko ga spremeni datum (1). wtmp se vzdržuje s prijavo (1), init (1) in nekaterimi različicami getty (1). Nobeden od teh programov ne ustvari datoteke , zato če je odstranjen, se vodenje evidenc izklopi.