Mësoni Command Linux - wtmp

emër

utmp, wtmp - regjistrimet e hyrjes

përmbledhje

#include

Përshkrim

Skeda utmp i lejon një të zbulojë informacionin rreth asaj se kush po përdor aktualisht sistemin. Mund të ketë më shumë përdorues që aktualisht përdorin sistemin, sepse jo të gjitha programet përdorin prerjet e jashtme.

Paralajmërim: utmp nuk duhet të shkruhet, sepse shumë programe të sistemit (budallallëk) varen nga integriteti i saj. Ju rrezikoni skedarët e sistemit të falsifikuar dhe modifikimet e skedarëve të sistemit nëse largoheni nga ndonjë përdorues i shkruajtshëm.

Dosja është një rend i hyrjeve me strukturën e mëposhtme të deklaruar në skedarin e përfshirjes (vini re se kjo është vetëm një nga disa përkufizime rreth; detajet varen nga versioni i 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 KONTABILJA 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * statusin e përfundimit të procesit. * / short int e_exit; / * statusin e daljes nga procesi. * /}; struktur utmp {short ut_type; / * lloji i identifikimit * / pid_t ut_pid; / * pid e procesit të identifikimit * / char ut_line [UT_LINESIZE]; / * emri i pajisjes së tty - "/ dev /" * / char ut_id [4]; / * init id ose shkurtor. ttyname * / char ut_user [UT_NAMESIZE]; / * emri i përdoruesit * / char ut_host [UT_HOSTSIZE]; / * hostname për hyrje të largët * / struct exit_status ut_exit; / * Gjendja e daljes së një procesi të shënuar si DEAD_PROCESS. * / long ut_session; / * ID sesioni, përdoret për windowing * / struct timeval ut_tv; / * është bërë hyrja në kohë. * / int32_t ut_addr_v6 [4]; / * Adresa IP e hostit të largët. * / jastëk char [20]; / * Rezervuar për përdorim të ardhshëm. * /}; / * Hacks pajtueshmërisë prapa. * / #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]

Kjo strukturë jep emrin e skedarit të veçantë që lidhet me terminalin e përdoruesit, emrin e përdoruesit të përdoruesit dhe kohën e hyrjes në formë të kohës (2). Fushat e stringit përfundojnë me '\ 0' nëse janë më të shkurtër se madhësia e fushës.

Hyrjet e para të krijuara ndonjëherë rezultojnë nga init (8) përpunimi inittab (5). Përpara se një hyrje të përpunohet, megjithatë, init (8) pastron lart duke vendosur ut_typeDEAD_PROCESS , duke pastruar ut_user , ut_host dhe ut_time me null bytes për çdo rekord që ut_type nuk është DEAD_PROCESS ose RUN_LVL dhe ku nuk ekziston asnjë proces me ut_pid PID. Nëse nuk mund të gjendet rekord i zbrazët me ut_id të nevojshëm, init krijon një të re. Ai vendos ut_id nga inittab, ut_pid dhe ut_time te vlerat aktuale, dhe ut_type te INIT_PROCESS .

getty (8) lokalizon hyrjen nga pid, ndryshon tipin e tipitLOGIN_PROCESS , ndryshon kohëzgjatjen , përcakton ut_line dhe pret që lidhja të vendoset. login (8), pasi një përdorues është autentikuar, ndryshon tipin e tipitUSER_PROCESS , ndryshon kohën e përdorimit , dhe përcakton ut_host dhe ut_addr . Në varësi të getty (8) dhe login (8), të dhënat mund të vendosen nga ut_line në vend të ut_pid preferuar.

Kur init (8) gjen se një proces ka dalë, ai lokalizon hyrjen e tij utmp nga ut_pid , vendos ut_typeDEAD_PROCESS , dhe pastron ut_user , ut_host dhe ut_time me null bytes.

xterm (1) dhe emuluesit tjerë terminalë krijojnë direkt një rekord USER_PROCESS dhe gjenerojnë ut_id duke përdorur dy shkronjat e fundit të / dev / ttyp % c ose duke përdorur p % d për / dev / pts / % d . Nëse ata gjejnë një DEAD_PROCESS për këtë id, ata riciklojnë atë, përndryshe ata krijojnë një hyrje të re. Nëse ata mund, ata do të shënojnë atë si DEAD_PROCESS në daljes dhe është e këshilluar që ata null ut_line , ut_time , ut_user , dhe ut_host si.

xdm (8) nuk duhet të krijojë një rekord utmp, sepse nuk ka terminal të caktuar. Leja për të krijuar një do të rezultojë në gabime, të tilla si 'gisht: nuk mund të stat /dev/machine.dom'. Ajo duhet të krijojë shënime wtmp, megjithatë, ashtu si ftpd (8).

telnetd (8) krijon një hyrje LOGIN_PROCESS dhe lë pjesën tjetër për tu identifikuar (8) si zakonisht. Pas mbarimit të seancës telnet, telnetd (8) pastron lart në mënyrë të përshkruar.

Regjistri wtmp regjistron të gjitha hyrjet dhe logout. Formati i saj është pikërisht si utmp përveç se një emër përdoruesi zero tregon një logout në terminalin e lidhur. Për më tepër, emri i terminalit "~" me emrin e përdoruesit "mbyllje" ose "reboot" tregon një mbyllje ose reboot të sistemit dhe palë emrave të terminalit "|" / "}" regjistron kohën e vjetër / të re të sistemit kur data (1) e ndryshon atë. wtmp ruhet nga login (1), init (1), dhe disa versione të getty (1). Asnjë nga këto programe nuk krijon skedarin , kështu që nëse fshihet, mbajtja e shënimeve është e fikur.