Jifunze Amri ya Linux - wtmp

Jina

utmp, wtmp - login rekodi

Sahihi

#include

Maelezo

Faili ya utmp inaruhusu mtu kugundua maelezo kuhusu nani anaye kutumia mfumo. Kunaweza kuwa na watumiaji zaidi sasa wanaotumia mfumo, kwa sababu si programu zote zinazotumia magogo ya utmp.

Onyo: utmp haipaswi kuandikwa, kwa sababu programu nyingi za mfumo (upumbavu) hutegemea uaminifu wake. Unaathiri mafunguo ya mfumo wa mfumo na marekebisho ya faili za mfumo ikiwa ukiacha utmp iliyoandikwa kwa mtumiaji yeyote.

Faili ni mlolongo wa viingilio na muundo uliofuata uliotangaza kwenye faili iliyojumuisha (kumbuka kwamba hii ni moja tu ya ufafanuzi kadhaa kote, maelezo hutegemea toleo la 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 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 {short int e_termination; / * hali ya kusitisha mchakato. * / short int e_exit; / * hali ya kuondoka kwa hali. * /}; muundo wa utmp {mfupi ut_type; / * aina ya kuingia * / pid_t ut_pid; / * pid ya mchakato wa kuingia * / char ut_line [UT_LINESIZE]; jina * la kifaa cha tty - "/ dev /" * / char ut_id [4]; / * init id au abbrev. Jina la jina * / char ut_user [UT_NAMESIZE]; / * jina la mtumiaji * / char ut_host [UT_HOSTSIZE]; / * hostname kwa login kijijini * / struct exit_status ut_exit; / * Hali ya kutoka kwa mchakato uliowekwa kama DEAD_PROCESS. * / ut_session ndefu; / * kitambulisho cha kikao, kilichotumiwa kwa windowing * / struct timeval ut_tv; / * muda wa kuingia ulifanywa. * / int32_t ut_addr_v6 [4]; / * Anwani ya IP ya jeshi la mbali. * / pedi pad [20]; / * Imehifadhiwa kwa matumizi ya baadaye. * /}; / * Hacks utangamano nyuma. * / #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]

Mfumo huu unatoa jina la faili maalum inayohusishwa na terminal ya mtumiaji, jina la login la mtumiaji, na wakati wa kuingia katika hali ya muda (2). Mashamba ya kamba yanakomazwa na '\ 0' ikiwa ni mfupi kuliko ukubwa wa shamba.

Maingilio ya kwanza yaliyotokana na matokeo ya initab (5) ya initta (5) ya usindikaji. Kabla ya kuingizwa, hutafsiriwa kwa init (8) kusafisha utmp kwa kuweka ut_type kwa DEAD_PROCESS , kufuta ut_user , ut_host , na ut_time na null kwa kila rekodi ambayo ut_type si DEAD_PROCESS au RUN_LVL na ambapo hakuna mchakato na PID ut_pid ipo. Ikiwa hakuna rekodi tupu na ut_id inayohitajika, init inaunda mpya. Inaweka ut_id kutoka inittab, ut_pid na ut_time kwa maadili ya sasa, na ut_type kwa INIT_PROCESS .

getty (8) inatafuta kuingia kwa pid , inachukua mabadiliko kwa LOGIN_PROCESS , kubadilisha ut_time , itaweka ut_line , na inasubiri kuunganishwa ili kuanzishwa. kuingia (8), baada ya kuthibitishwa na mtumiaji, hubadilishana na USER_PROCESS , kubadilisha ut_time , na kuweka ut_host na ut_addr . Kulingana na kupata (8) na kuingia (8), rekodi zinaweza kupatikana kwa ut_line badala ya ut_pid .

Wakati init (8) inapata kuwa mchakato umetoka , huweka nafasi ya kuingia kwa ut_pid , huweka ut_type kwa DEAD_PROCESS , na hufungua ut_user , ut_host na ut_time na null null.

xterm (1) na emulators wengine wa moja kwa moja huunda rekodi USER_PROCESS na kuzalisha ut_id kwa kutumia barua mbili za mwisho za / dev / ttyp % c au kwa kutumia p % d kwa / dev / pts / % d . Ikiwa wanapata DEAD_PROCESS kwa id hii, wao huiandaa tena, vinginevyo wanaunda kuingia mpya. Ikiwa wanaweza, wataiweka kama DEAD_PROCESS juu ya kuondoka na inashauriwa kwamba hawatumiki kabisa ut_line , ut_time , ut_user , na ut_host .

xdm (8) haipaswi kuunda rekodi ya utmp, kwa sababu hakuna terminal iliyopewa. Kuruhusu kuunda moja itasababisha makosa, kama 'kidole: haiwezi stat /dev/machine.dom'. Inapaswa kuunda funguo za wtmp, ingawa, kama ftpd (8) inavyofanya.

telnetd (8) inaweka kuingia kwa LOGIN_PROCESS na inaacha wengine kuingia (8) kama kawaida. Baada ya kikao cha telnet mwisho, telnetd (8) kutakasa utmp kwa njia iliyoelezwa.

Faili ya wtmp kumbukumbu kumbukumbu zote na logouts. Fomu yake ni sawa na utmp ila jina la mtumiaji null linaonyesha kuingia kwenye terminal inayohusiana. Zaidi ya hayo, jina la terminal "~" na jina la mtumiaji "shutdown" au "reboot" linaonyesha kusitishwa kwa mfumo au kufungua upya na majina ya mwisho "|" / "}" hufunga wakati wa zamani / mpya wakati tarehe (1) ibadilisha. wtmp inadhibitiwa na kuingia (1), init (1), na baadhi ya matoleo ya kupata (1). Hakuna ya programu hizi zinajenga faili , hivyo ikiwa imeondolewa, kuweka kumbukumbu ya kumbukumbu huzimwa.