Սովորեք Linux հրամանատարին - wtmp

Անուն

utmp, wtmp - մուտքի գրառումները

Սինոփսիս

#include

Նկարագրություն

The utmp ֆայլը թույլ է տալիս բացահայտել մեկի մասին, ով ներկայումս օգտագործում է համակարգը: Կարող է լինել ավելի շատ օգտվողներ, որոնք ներկայումս օգտագործում են համակարգը, քանի որ ոչ բոլոր ծրագրերը օգտագործում են utmp գրանցումը:

Warning: utmp- ը չպետք է գրել, քանի որ շատ համակարգային ծրագրեր (հիմար) կախված է իր ամբողջականությունից: Դուք ռիսկի եք կեղծված համակարգի logfiles եւ համակարգի ֆայլերի փոփոխություններ, եթե դուք հեռացնեք utmp գրել ցանկացած օգտվողին:

Ֆայլը գրառումների հերթականությունն է, որը ներառում է հետեւյալ կառուցվածքը, ներառված է ներգրավված ֆայլում (նշեք, որ դա ընդամենը մի քանի սահմանումներից մեկն է, մանրամասները կախված են 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 {short int e_termination; / * գործընթացի դադարեցման կարգավիճակ: * / կարճ int e_exit; / * գործընթացի ելքի կարգավիճակ: * /}; struct utmp {short ut_type; / * մուտքի տեսակը * / pid_t ut_pid; / * մուտքի գործընթացի pid * / char ut_line [UT_LINESIZE]; / * device name of tty - "/ dev /" * / char ut_id [4]; / * init id կամ abbrev: ttyname * / char ut_user [UT_NAMESIZE]; / * օգտվողի անունը * / char ut_host [UT_HOSTSIZE]; / * hostname հեռավոր մուտքի համար * / struct exit_status ut_exit; / * DEAD_PROCESS- ի նշվող գործընթացի ելքի կարգավիճակը: * / երկար ut_session; / * նիստի ID, որը օգտագործվում է windowing * / struct timeval ut_tv; / * ժամանակի մուտքագրվել է: * / int32_t ut_addr_v6 [4]; / * Հեռավոր սերվերի IP հասցեն: * / char pad [20]; / * Պահպանում է ապագա օգտագործման համար: * /}; / * Հետադարձ համատեղելիություն hacks. * / #define ut_name ut_user #ifnd _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]

Այս կառուցվածքը տալիս է օգտագործողի տերմինալի հետ կապված հատուկ ֆայլի անունը, օգտագործողի մուտքի անունը եւ մուտքի ժամանակը ժամանակի ձեւով (2): Լարային դաշտերը դադարում են '\ 0' -ով, եթե դրանք կարճ են, քան դաշտի չափը:

Առաջին իսկ գրառումները երբեւէ ստեղծվել են init (8) պրոցեդուրայի inittab- ից (5): Նախքան մուտքագրումը մշակվում է, init (8) -ը մաքրում է utmp- ը, ut_type- ը DEAD_PROCESS- ի համար , ut_user- ի , ut_host- ի եւ ut_time- ի մաքրման համար, յուրաքանչյուր գրանցման համար null բայթով, որը ut_type- ը DEAD_PROCESS կամ RUN_LVL չէ եւ PID ut_pid- ի հետ որեւէ գործընթաց գոյություն չունի: Եթե ​​անհրաժեշտ պարունակվող ut_id- ի հետ որեւէ դատարկ գրառում չկար , նախաձեռնությունը նոր է ստեղծում: Այն սահմանում ut_id է inittab, ut_pid եւ ut_time- ից ընթացիկ արժեքներին եւ ut_type- ը INIT_PROCESS- ին :

getty (8) տեղադրում է pid- ի մուտքն , փոխում ut_type- ը LOGIN_PROCESS- ին , փոխում ut_time- ը , սահմանում ut_line- ը եւ սպասում է կապի հաստատման համար: մուտք (8), օգտագործողի կողմից հաստատվածից հետո ut_type- ը փոխում է USER_PROCESS , փոխում ut_time եւ սահմանում ut_host եւ ut_addr : Կախված getty (8) եւ մուտքի (8), գրառումները կարող են տեղադրվել ut_line `նախընտրելի ut_pid- ի փոխարեն:

Երբ init (8) գտնում է, որ գործընթացը դուրս է եկել, այն գտնվում է ut_pid- ի իր utmp մուտքագրում, սահմանում ut_type է DEAD_PROCESS- ը եւ clears ut_user- ը , ut_host- ը եւ ut_time- ը null bytes- ով:

xterm (1) եւ այլ տերմինալային emulators ուղղակիորեն ստեղծում USER_PROCESS ռեկորդ եւ առաջացնում ut_id օգտագործելով վերջին երկու տառերը / dev / ttyp % c կամ օգտագործելով p % d համար / dev / pts / % d : Եթե ​​նրանք գտնում են DEAD_PROCESS այս ID- ի համար, ապա դրանք վերամշակվում են, հակառակ դեպքում նրանք ստեղծում են նոր գրառում: Եթե ​​նրանք կարող են, ապա այն կդիտարկեն որպես DEAD_PROCESS դուրս գալու համար եւ խորհուրդ է տրվում, որ դրանք null ut_line , ut_time , ut_user եւ ut_host :

xdm- ը (8) չպետք է ստեղծել utmp գրառում, քանի որ չկա նշանակված տերմինալ: Թույլ տալ, որ դա ստեղծի, կհանգեցնի սխալների, ինչպիսիք են «մատը: չի կարող stat /dev/machine.dom»: Այն պետք է ստեղծել wtmp գրառումները, չնայած, ինչպես ftpd (8):

telnetd- ը (8) սահմանում է LOGIN_PROCESS- ի մուտքն ու մնացածը թողնում է մուտք գործելու համար (8): Telnet- ի ավարտից հետո telnetd- ը (8) մաքրում է utmp- ը նկարագրված ձեւով:

Wtmp ֆայլը գրանցում է բոլոր մուտքերը եւ logouts: Դրա ձեւաչափը հենց նման է utmp- ի նման, բացառությամբ, որ անվավեր անունը նշում է միացման տերմինալում ելք: Բացի այդ, «~» - ի «անջատման» կամ «վերաբեռնում» տերմինալի անունը ցույց է տալիս համակարգի անջատումը կամ վերակենդանացումը եւ «|» տերմինալի անունների զույգը: / "}" տեղեկացնում է հին / նոր համակարգի ժամանակը, երբ ամսաթիվը (1) փոխում է այն: wtmp- ը պահպանվում է մուտքի (1), init (1), եւ getty- ի որոշ տարբերակները (1): Այս ծրագրերից ոչ մեկը չի ստեղծում ֆայլը , այնպես որ, եթե այն հեռացվի, ռեկորդային պահվածքը անջատված է: