ဟာ Linux စစ်ဌာနချုပ် Learn - wtmp

အမည်

utmp, wtmp - ရဲ့ login မှတ်တမ်းများ

အနှစ်ချုပ်

#include

ဖေါ်ပြချက်

အဆိုပါ utmp file ကိုတဦးတည်းလက်ရှိစနစ်သုံးပြီးသူအကြောင်းသတင်းအချက်အလက်ရှာဖွေတွေ့ရှိရန်ခွင့်ပြုပါတယ်။ အားလုံးမဟုတ်အဘယ်ကြောင့်ဆိုသော်လက်ရှိစနစ်သုံးပြီးပိုပြီးအသုံးပြုသူများအရှိကောင်းရှိနိုင်ပါသည် အစီအစဉ်များ utmp သစ်ထုတ်လုပ်ရေးကိုအသုံးပြုပါ။

သတိပေးချက်: (မိုက်) က၎င်း၏သမာဓိရှိအပေါ်မူတည်အများအပြား system ကိုအစီအစဉ်များကိုဘာဖြစ်လို့လဲဆိုတော့ utmp, writable မဖြစ်ရပါမည်။ သင်သည်မည်သည့်အသုံးပြုသူမှ utmp writable စွန့်ခွာလျှင်သင်ကိုဖြည်းဖြည်းချင်း system ကို logfiles နှင့် system ဖိုင်တွေကိုပြုပြင်မွမ်းမံအန္တာရာယ်။

အဆိုပါဖိုင်ပါဝင်သည်ဖိုင်ထဲမှာကြေညာအောက်ပါဖွဲ့စည်းပုံနှင့်အတူ entries တွေကိုတစ် sequence ကို (ဒီသာန်းကျင်အများအပြားအဓိပ္ပာယ်များထဲမှတစ်ခုဖြစ်သည်သတိပြုပါ; အသေးစိတ်ကို 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 စာရင်းကိုင် 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {အတို int e_termination; / * ဖြစ်စဉ်ကိုရပ်စဲအခြေအနေ။ * / ရေတို int e_exit; / * ဖြစ်စဉ်ကိုထွက်ပေါက်အခြေအနေ။ * /}; struct utmp {အတို ut_type; ရဲ့ login ၏ / * အမျိုးအစား * / pid_t ut_pid; / * PID ရဲ့ login ဖြစ်စဉ်ကို * / char ut_line ၏ [UT_LINESIZE]; TTY ၏ / * ကိရိယာအမည်ကို - "/ dev /" * / char ut_id [4]; / * init အိုင်ဒီသို့မဟုတ် abbrev ။ ttyname * / char ut_user [UT_NAMESIZE]; / * user name ကို * / char ut_host [UT_HOSTSIZE]; ဝေးလံခေါင်သီရဲ့ login ဘို့ / * အိမ်ရှင်အမည် * / struct exit_status ut_exit; DEAD_PROCESS အဖြစ်မှတ်သားတဲ့လုပ်ငန်းစဉ်၏ / * ဒီထွက်ပေါက်အခြေအနေ။ * / ရှည်လျား ut_session; / * windowing ကို * / struct timeval ut_tv အတှကျအသုံးပွု session တစ်ခု ID ကို, / * အချိန် entry ကိုဖန်ဆင်းခဲ့သည်။ * / int32_t ut_addr_v6 [4]; ဝေးလံခေါင်သီအိမ်ရှင်၏ / * IP လိပ်စာကို။ * / char pad ပါ [20]; / * အနာဂတ်အသုံးပြုရန် Reserved ။ * /}; / * နောက်ပြန် Compatibility ကို Hack ။ * / #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]

ဒါဟာဖွဲ့စည်းပုံအထူးအသုံးပြုသူရဲ့ Terminal ကိုနဲ့ဆက်စပ်ဖိုင်, အသုံးပြုသူရဲ့ရဲ့ login အမည်, နှင့်ပုံစံရဲ့ login ၏အချိန်၏နာမကိုပေးသနား အချိန် (2) ။ သူတို့လယ်ပြင်၏အရွယ်အစားထက်ပိုမိုတိုတောင်းလျှင် string လယ်ကွင်း '\ 0 င်' 'တို့ကရပ်စဲနေကြသည်။

အစဉ်အဆက် init ကနေရလဒ် created ပထမ entries တွေကို (8) inittab (5) processing ။ တစ်ဦး entry ကိုလုပ်ငန်းများ၌မီသျော init (8), DEAD_PROCESS မှ ut_type setting များက utmp တက်သန့်ရှင်းရေး ut_user ရှင်းလင်းရေး, ut_host နှင့်တရားမဝင်သောနှင့်အတူ ut_time ut_type DEAD_PROCESS သို့မဟုတ် RUN_LVL နှင့် PID ut_pid နှင့်အတူအဘယ်သူမျှမမှုလုပ်ငန်းစဉ်တည်ရှိဘယ်မှာမထားတစ်ခုချင်းစီကိုစံချိန်တင်အဘို့အ bytes ။ လိုအပျသော ut_id နှင့်အတူအဘယ်သူမျှမဗလာစံချိန်တွေ့နိုင်ပါသည်ရှိလျှင်, init အသစ်တစ်ခုကိုတဦးတည်းဖန်တီးပေးပါတယ်။ ဒါဟာလက်ရှိတန်ဖိုးများဖို့ inittab, ut_pid နှင့် ut_time ထံမှ ut_id နှင့် INIT_PROCESS မှ ut_type သတ်မှတ်။

Getty (8), အ PID အားဖြင့် entry ကိုတည်နေရာ LOGIN_PROCESS မှ ut_type ပြောင်းလဲ, ut_time ပြောင်းလဲတည်ထောင်ခံရဖို့ချိတ်ဆက်မှုအတွက် ut_line နှင့်စောင့်သတ်မှတ်။ ရဲ့ login (8), အသုံးပြုသူတစ်ဦးစစ်မှန်ကြောင်းသိရသည်ပြီးနောက်, ut_time ပြောင်းလဲနှင့်စုံ ut_host နှင့် ut_addr, USER_PROCESS မှ ut_type ပြောင်းလဲစေပါသည်။ Getty (8) နှင့်ရဲ့ login ပေါ် မူတည်. (8), မှတ်တမ်းများအစားပိုကောင်းတယ် ut_pidut_line အားဖြင့်တည်ရှိသောနိုင်ပါသည်။

init (8) လုပ်ငန်းစဉ်မထွက်ခဲ့သည်ကိုတွေ့သောအခါ, ut_pid ဖြင့်၎င်း၏ utmp entry ကိုတည်နေရာ, DEAD_PROCESS မှ ut_type သတ်မှတ်နှင့်တရားမဝင်သော bytes နှင့်အတူ ut_user, ut_host နှင့် ut_time ရှင်းလင်းရေး။

xterm (1) နှင့်အခြား terminal ကို emulator တိုက်ရိုက် USER_PROCESS စံချိန်ဖန်တီးနှငျ့ / dev / ttyp% က c ၏နောက်ဆုံးစာနှစ်စောင်ကို အသုံးပြု. သို့မဟုတ် / dev / မှတ် /% ဃများအတွက် p% ဃသုံးပြီးအားဖြင့် ut_id generate ။ သူတို့ကဒီအိုင်ဒီများအတွက် DEAD_PROCESS ကိုရှာဖွေလျှင်, သူတို့သည်မဟုတ်ရင်သူတို့အသစ်တစ်ခု entry ကိုဖန်တီးသောကြောင့်ပြန်သုံး။ သူတို့တတ်နိုင်လျှင်သူတို့မထွက်အပေါ် DEAD_PROCESS ကြောင့် mark ပါလိမ့်မယ်ဒါကြောင့်သူတို့က ut_line null ကြောင်းအကြံပြုသည် ut_time, ut_user နှင့်အဖြစ်ကောင်းစွာ ut_host

အဘယ်သူမျှမတာဝန်ပေးအပ် terminal ကိုလည်းမရှိသောကွောငျ့ xdm (8), တစ်ဦး utmp စံချိန်ကိုမဖန်တီးသင့်ပါတယ်။ ဒါကြောင့်တဦးတည်းကဲ့သို့သောအမှားများအတွက်ဖြစ်ပေါ်လာစေမည်ဖန်တီးတစ်ဆင့်ပြီးတစ်ဆင့် '' လက်ချောင်း: /dev/machine.dom Stats လို့မရပါဘူး '' ။ ဒါဟာ (8) မဖွင့် ftpd ကဲ့သို့သော်လည်း, wtmp entries တွေကိုဖန်တီးသင့်ပါတယ်။

telnetd (8) တစ်ဦး LOGIN_PROCESS entry ကိုတက်သတ်မှတ်နှင့်ပုံမှန်အတိုင်းအဖြစ် (8) login မှကြွင်းသောအရာထွက်ခွာမည်။ အဆိုပါ telnet session ကိုကြီးစွန်းပြီးနောက် telnetd (8) ဖော်ပြထားလမ်းအတွက် utmp တက်သန့်ရှင်းရေး။

အဆိုပါ wtmp ဖိုင်အားလုံး login နှင့် logout မှတ်တမ်းတင်ထားသည်။ ၎င်း၏ပုံစံကိုအတိအကျတရားမဝင်သောအသုံးပြုသူအမည်ဆက်စပ် terminal ကိုအပေါ်တစ်ဦး logout ဖော်ပြသော မှလွဲ. utmp ကဲ့သို့ဖြစ်၏။ "|" ထို့အပြင် user name ကို "shutdown ချ" သို့မဟုတ် "reboot" နဲ့ terminal ကိုအမညျကို "~" စနစ်တစ်ခု shutdown ချသို့မဟုတ် reboot နှင့် terminal ကိုအမည်များ၏ pair တစုံကိုညွှန်ပြ / "}" သောအခါအဟောင်း / အသစ်သောစနစ်အချိန်တွင်းသို့ နေ့စွဲ (1) ကပြောင်းလဲစေပါသည်။ wtmp ရဲ့ login (1), init (1), နှင့် Getty အချို့မူကွဲများ (1) ကထိန်းသိမ်းထားတာဖြစ်ပါတယ်။ ဤအစီအစဉ်များ၏မဖန်တီး ဖိုင် , ဒါကြောင့်ဖယ်ရှားခံရလျှင်, စံချိန်-စောင့်ရှောက်ပိတ်ထားသည်။