Aprann lòd la Linux - wtmp

Non

utmp, wtmp - dosye login

Rezime

#Enkli

Deskripsyon

Fichye utmp la pèmèt yon moun dekouvri enfòmasyon sou ki moun ki itilize sistèm lan kounye a. Gen pouvwa pou plis itilizatè yo kounye a lè l sèvi avèk sistèm lan, paske se pa tout pwogram sèvi ak utmp logging.

Avètisman: utmp pa dwe sekrè , paske anpil pwogram sistèm (fou) depann sou entegrite li yo. Ou riske sistèm logfiles sistèm ak modifikasyon nan dosye sistèm si ou kite utmp ekriven nan nenpòt ki itilizatè.

Fichye a se yon sekans nan antre ak estrikti sa a te deklare nan dosye a enkli (note ke sa a se sèlman youn nan definisyon plizyè alantou; detay depann sou vèsyon an nan libc):

#define UT_UNKNOWN 0 #define RUN_LVL 1 #define BOOT_TIME 2 #define NEW_TIME 3 #define OLD_TIME 4 # defini INIT_PROCESS 5 #define LOGIN_PROCESS 6 #define USER_PROCESS 7 #define DEAD_PROCESS 8 #define KONTAKTE 9 #define UT_LINESIZE 12 # defini UT_NAMESIZE 32 # defini UT_HOSTSIZE 256 struct exit_status {kout int e_termination; / * pwosesis revokasyon pwosesis. * / kout int e_exit; / * pwosesis estati sòti. * /}; struct utmp {kout ut_type; / * kalite login * / pid_t ut_pid; / * PID nan pwosesis login * / char ut_line [UT_LINESIZE]; / * aparèy non nan tty - "/ dev /" * / char ut_id [4]; / * inite ID oswa abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * non itilizatè * / char ut_host [UT_HOSTSIZE]; / * hostname pou koneksyon aleka * / struct exit_status ut_exit; / * Estati sòti nan yon pwosesis ki make kòm DEAD_PROCESS. * / long ut_session; / * sesyon ID, yo itilize pou fenèt * / struct timeval ut_tv; / * te tan antre te fè. * / int32_t ut_addr_v6 [4]; / * Adrès IP nan lame aleka. * / kas pad [20]; / * Rezève pou itilize nan lavni. * /}; / * Backs konpatibilite antay. * / #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]

Estrikti sa a bay non an nan dosye a espesyal ki asosye ak tèminal itilizatè a, non login itilizatè a, ak lè a nan login nan fòm lan nan tan (2). Chan kòd yo sispann nan '\ 0' si yo pi kout pase gwosè a nan jaden an.

Premye antre tout tan tout tan kreye rezilta soti nan initab (8) initab (5). Anvan yo antre yon antre, menm si, init (8) netwaye utmp pa mete ut_type pou DEAD_PROCESS , netwaye ut_user , ut_host , ak ut_time ak bytes null pou chak dosye ki ut_type se pa DEAD_PROCESS oswa RUN_LVL epi kote pa gen okenn pwosesis ki gen PWIT ut_pid egziste. Si yo pa jwenn okenn dosye vid ak ut_id ki nesesè yo, init kreye yon nouvo. Li etabli ut_id soti nan inittab a, ut_pid ak ut_time nan valè aktyèl yo, ak ut_type INIT_PROCESS .

Getty (8) lokalize antre nan PID la, chanjman ut_type LOGIN_PROCESS , chanjman ut_time , kouche ut_line , epi tann pou koneksyon yo dwe etabli. login (8), apre yon itilizatè yo te otantifye, chanjman ut_type USER_PROCESS , chanjman ut_time , ak kouche ut_host ak ut_addr . Tou depan de getty (8) ak login (8), dosye yo ka lokalize pa ut_line olye de ut_pid la preferab.

init (8) jwenn ke yon pwosesis te sòti, li lokalize antre utmp li yo pa ut_pid , kouche ut_type pou DEAD_PROCESS , epi efase ut_user , ut_host ak ut_time ak bytes null.

xterm (1) ak lòt emulateur tèminal dirèkteman kreye yon dosye USER_PROCESS ak jenere ut_id a lè l sèvi avèk dènye de lèt / dev / ttyp % c oswa lè l sèvi avèk p % d pou / dev / pts / % d . Si yo jwenn yon DEAD_PROCESS pou id sa a, yo resikle li, otreman yo kreye yon nouvo antre. Si yo ka, yo pral make li kòm DEAD_PROCESS sou sòti epi li se konseye yo ke yo nil ut_line , ut_time , ut_user , ak ut_host tou.

xdm (8) pa ta dwe kreye yon dosye utmp, paske pa gen okenn tèminal asiyen. Lè w kite li kreye yon sèl, sa pral lakòz nan erè, tankou 'dwèt: pa ka stat / dev / machin.dom'. Li ta dwe kreye antre wtmp, menm si, jis tankou ftpd (8) fè.

telnetd (8) kouche yon antre LOGIN_PROCESS epi kite rès la pou konekte (8) kòm dabitid. Apre sesyon telnet la fini, telnetd (8) netwaye utmp nan fason ki dekri.

Dosye a wtmp dosye tout koneksyon ak logouts. Fòma li yo se egzakteman tankou utmp eksepte ke yon non utilisateur non endike yon logout sou tèminal ki asosye. Anplis de sa, non an tèminal "~" ak non itilizatè "se" oswa "rdemare" endike yon fen sistèm oswa rdemare ak pè a nan non tèminal "|" / "}" mòso tan sistèm lan fin vye granmoun / nouvo lè dat (1) chanje li. Wtmp konsève pa login (1), init (1), ak kèk vèsyon nan getty (1). Ni nan pwogram sa yo kreye dosye a , kidonk si li retire, dosye-kenbe se etenn.