Skip to main content

Kaip naudoti Unix komandą Utmp Linux

Anonim

Theutmp failas leidžia atrasti informaciją apie tai, kas šiuo metu naudoja sistemą. Šiuo metu sistemoje gali būti daugiau vartotojų, nes ne visos programos naudoja utmp registravimą.

Įspėjimas: utmp negali būti rašomi, nes daugelis sistemos programų (kvailiai) priklauso nuo jo vientisumo. Jei paliksite, jūs rizikuojate suklastoti sistemos logfiles ir keisti sistemos failusutmpgalima rašyti bet kuriam vartotojui.

Failas yra įrašų sekos, kurių ši struktūra yra deklaruota įtraukimo failo (atkreipkite dėmesį, kad tai tik viena iš kelių apibrėžimų aplink; duomenys priklauso nuo libc versijos):

#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 APSKAITA 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status (short int e_termination; / * proceso nutraukimo būsena. * / trumpas int e_exit; / * proceso pabaigos būsena. * /}; struct utmp {trumpas ut_type; / * prisijungimo tipas * / pid_t ut_pid; / * pid prisijungimo procesas * / char ut_line UT_LINESIZE; / * įrenginio pavadinimas tty - "/ dev /" * / char ut_id 4; / * init id arba santrumpa. ttyname * / char ut_user UT_NAMESIZE; / * vartotojo vardas * / char ut_host UT_HOSTSIZE; / * vardas, skirtas nuotoliniam prisijungimui * / struct exit_status ut_exit; / * Proceso, pažymėto DEAD_PROCESS, išėjimo statusas. * / ilgas ut_session; / * sesijos ID, naudojamas langams * / struct timeval ut_tv; / * laikas buvo įrašytas. * / int32_t ut_addr_v6 4; / * Nuotolinio kompiuterio IP adresas. * / char padas 20; / * Rezervuota naudoti ateityje. * /}; / * Grįžtamojo suderinamumo hacks. * / #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

Ši struktūra suteikia specialaus failo, susieto su vartotojo terminalu, vardą, naudotojo prisijungimo vardą ir prisijungimo laiką formoslaikas(2). Styginių laukai nutraukiami'' jei jie yra trumpesni už lauko dydį.

Pirmieji įrašai, kuriuos kada nors sukūrė, gaunami iš Init (8) apdorojimas inittab (5). Prieš registruojant įrašą, Init (8) išvalo utmp nustatydamasut_type įDEAD_PROCESS, kliringasut_user, ut_host, irut_time su nuliniais baitais už kiekvieną įrašą, kurisut_type nėraDEAD_PROCESS arbaRUN_LVL ir kur nėra proceso su PIDut_pid egzistuoja. Jei nėra tuščių įrašų su reikalingaisut_id galima rasti init sukuria naują. Tai nustatout_id iš inittabut_pid irut_time iki dabartinių verčių, irut_type įINIT_PROCESS.

Getty (8) nustato įrašą pid, pasikeičiaut_type įLOGIN_PROCESS, pasikeičiaut_time, nustatout_line, ir laukia ryšio nustatymo. Prisijungti (8), kai vartotojas yra autentifikuotas, pasikeičiaut_type įUSER_PROCESS, pasikeičiaut_timeir nustatout_host irut_addr. Priklausomai nuo Getty (8) ir Prisijungti (8) įrašai gali būti pateikti ikiut_line vietoj pageidaujamosut_pid.

Kada Init (8) nustato, kad procesas baigėsi, jis nustato savo utmp įrašąut_pid, nustatout_type įDEAD_PROCESSir išvalout_user, ut_host irut_time su nuliais baitais.

Xterm (1) ir kiti terminaliniai emuliatoriai tiesiogiai sukuriaUSER_PROCESS įrašyti ir generuotiut_id naudojant paskutines dvi raidės/ dev / ttyp % c arba naudojantp % d dėl/ dev / pts / % d . Jei jie randa aDEAD_PROCESS Dėl šio ID jie perdirbami, kitaip jie sukuria naują įrašą. Jei jie galės, jie tai pažymėsDEAD_PROCESS išvykstant ir patariama, kad jie null ut_line,ut_time, ut_user, irut_host taip pat.

xdm (8) neturėtų sukurti utmp įrašo, nes nėra priskirto terminalo. Leidimas jį sukurti sukelia klaidas, pvz., "Pirštas: can not stat /dev/machine.dom". Tačiau jis turėtų sukurti wtmp įrašus, kaip ir ftpd (8).

telnetd (8) nustatoma aLOGIN_PROCESS atvyksta ir palieka likusį poilsį Prisijungti (8) kaip įprasta. Kai telnet sesija baigiasi, telnetd (8) išvalo utmp nurodytu būdu.

Thewtmp failas įrašo visus prisijungimus ir atsijungimus. Jo formatas yra lygiai taip patutmp išskyrus tai, kad nulinis vartotojo vardas rodo išeitį iš susijusio terminalo. Be to, terminalo pavadinimas'~'su vartotojo vardu"išjungti" arba"perkrauti" rodo sistemos išjungimą arba paleidimą iš naujo ir terminalų pavadinimų pora'|'/'}' registruojamas senasis / naujas sistemos laikas, kai data (1) pakeičia jį.wtmp palaiko Prisijungti (1), Init (1) ir kai kurios versijos Getty (1). Nei viena iš šių programų nesudaro failo, taigi, jei ji pašalinta, įrašų saugojimas yra išjungtas.