Foghlaim an Ordú Linux - wtmp

Ainm

utmp, wtmp - taifid logála isteach

Achoimre

#include

Cur síos

Ceadaíonn an comhad utmp duine chun faisnéis a fháil amach faoi cé atá ag baint úsáide as an gcóras faoi láthair. D'fhéadfadh go mbeadh níos mó úsáideoirí ag baint úsáide as an gcóras faoi láthair, toisc nach n-úsáideann na cláir go léir utmp logging.

Rabhadh: níor chóir utmp a bheith inléite, toisc go bhfuil go leor clár córais (go holcach) ag brath ar a ionracas. Rioscaíonn tú logchláir chórais faked agus modhnuithe ar chomhaid chórais má fhágann tú utmp inghlactha d'aon úsáideoir.

Is é an comhad seicheamh iontrálacha leis an struchtúr seo a leanas a dhearbhaítear sa chomhad san áireamh (tabhair faoi deara nach bhfuil sé seo ach ceann de na sainmhínithe éagsúla atá ann; braitheann mionsonraí ar an leagan 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 {gearr-eamhshláinte; / * stádas foirceannadh próisis. * / short int e_exit; / * stádas imeachta próiseas. * /}; struct utmp {short ut_type; / * cineál logáil isteach * / pid_t ut_pid; / * pid ar phróiseas logáil isteach * / char ut_line [UT_LINESIZE]; / * ainm gléas tty - "/ dev /" * / char ut_id [4]; / * init id nó abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * ainm úsáideora * / char ut_host [UT_HOSTSIZE]; / * óstainm do logáil isteach iargúlta * / struct exit_status ut_exit; / * Stádas imeachta an phróisis marcáilte mar DEAD_PROCESS. * / long ut_session; / * ID seisiún, a úsáidtear le haghaidh fuinneoige * / struct timeval ut_tv; / * rinneadh iontráil ama. * / int32_t ut_addr_v6 [4]; / * Seoladh IP an óstach iargúlta. * / stuáil charr [20]; / * Ar cosaint le húsáid sa todhchaí. * /}; / * Hacaí comhoiriúnachta ar ais. * / #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]

Tugann an struchtúr seo ainm an chomhaid speisialta a bhaineann le críochfort an úsáideora, ainm logáil isteach an úsáideora, agus an t-am a logáil isteach i bhfoirm ama (2). Críochnaíonn '\ 0' réimsí teorainneacha má tá siad níos giorra ná méid an réimse.

Na chéad iontrálacha a cruthaíodh riamh mar thoradh ar thionscnamh próiseála init (8) (5). Sula ndéantar iontráil a phróiseáil, áfach, cuirtear tús le (8) utmp le feidhmiú ut_type chuig DEAD_PROCESS , imréiteach ut_user , ut_host , agus ut_time le bytes null le haghaidh gach taifead nach ut_type DEAD_PROCESSRUN_LVL agus nach bhfuil aon phróiseas le PID ut_pid ann. Mura féidir aon taifead folamh a fháil leis an ut_id is gá a fháil, cruthaíonn an tionscadal ceann nua. Leagann sé ut_id ón inittab, ut_pid agus ut_time leis na luachanna reatha, agus ut_type go INIT_PROCESS .

aimsíonn getty (8) an t-iontráil ag an pid, athraíonn ut_type go LOGIN_PROCESS , athraíonn ut_time , leagann sé ut_line , agus fanann sé le haghaidh nasc a bhunú. logáil isteach (8), tar éis d'úsáideoir a bheith fíordheimhnithe, athruithe ut_type chuig USER_PROCESS , athruithe ut_time , agus socraíonn ut_host agus ut_addr . Ag brath ar getty (8) agus logáil isteach (8), féadfaidh taifid a bheith suite ag ut_line in áit an ut_pid is fearr.

Nuair a fhaigheann init (8) go bhfuil próiseas tar éis dul amach, aimsíonn sé a utmp iontráil trí ut_pid , leagann ut_type go DEAD_PROCESS agus cleasann ut_user , ut_host agus ut_time le bytes null.

Cruthaíonn xterm (1) agus emulaitheoirí críochfoirt eile taifead USER_PROCESS agus cruthaíonn siad ut_id trí na dhá litreacha deiridh / dev / ttyp % c a úsáid nó trí p % d a úsáid le haghaidh / dev / pts / % d . Má fhaigheann siad DEAD_PROCESS don id seo, déanann siad athchúrsáil air, ar shlí eile cruthaíonn siad iontráil nua. Más féidir leo, déanfaidh siad é a mharcáil mar DEAD_PROCESS ar imeacht agus moltar go n- úsáideann siad ut_line , ut_time , ut_user , agus ut_host chomh maith.

Níor chóir xdm (8) utmpifead a chruthú, toisc nach bhfuil aon críochfort sannta ann. Cuirfidh earráidí, mar shampla 'finger: stat /dev/machine.dom' mar thoradh air sin. Ba cheart go gcruthófaí iontrálacha wtmp, áfach, mar a dhéanann ftpd (8).

socraíonn telnetd (8) iontráil LOGIN_PROCESS agus fágann sé an chuid eile chun logáil isteach (8) mar is gnách. Tar éis deireadh a chur leis an seisiún telnet, téann telnetd (8) i bhfeidhm ar an mbealach a thuairiscítear.

Taifeadann an comhad wtmp gach logáilín agus logáil isteach. Tá a fhormáid díreach cosúil le utmp ach amháin go gcuireann ainm úsáideora neamhspleách logáil isteach ar an teirminéal gaolmhar. Ina theannta sin, léiríonn an t-ainm "~" críochfoirt le "múchadh" ainm úsáideora nó "athchruthú" múchadh nó athchóiriú an chórais agus an péire ainmneacha teirminéil "|" / "}" an t-am córais sean / nua nuair a athraíonn dáta (1) é. Coimeádtar wtmp trí logáil isteach (1), init (1), agus roinnt leaganacha de getty (1). Cruthaíonn an ceann de na cláir seo an comhad , mar sin má dhéantar é a bhaint, cuirtear an taifead ar taispeáint.