Sužinokite Linux Command - wtmp

vardas

utmp, wtmp - prisijungimo įrašai

Anotacija

#include

apibūdinimas

Failas utmp leidžia aptikti informacijos 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 sisteminių programų (kvailiai) priklauso nuo jo vientisumo. Jūs rizikuojate suklastoti sistemos logfiles ir modifikuoti sistemos failus, jei jūs paliksite utmp įrašomą 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 pavadinimą, susietą su vartotojo terminalu, vartotojo prisijungimo vardą ir prisijungimo laiką laiko formoje (2). String laukai nutraukiami "\ 0", jei jie yra trumpesni už lauko dydį.

Pirmasis kada nors sukurtas įrašas buvo gautas iš init (8) apdorojimo inittab (5). Prieš atliekant įrašą, init (8) išvalo utmp, nustatydamas ut_type į DEAD_PROCESS , išvalydamas ut_user , ut_host ir ut_time su nuliais baitais kiekvienai įrašai, kurios ut_type nėra DEAD_PROCESS arba RUN_LVL ir kur nėra proceso su PID ut_pid . Jei nėra tuščių įrašų su reikiama ut_id , init sukuria naują. Jis nustato ut_id iš inittab, ut_pid ir ut_time į esamas reikšmes ir ut_type į INIT_PROCESS .

getty (8) nustato įrašą pid, pakeičia ut_type į LOGIN_PROCESS , pakeičia ut_time , nustato ut_line ir laukia, kol bus sukurtas ryšys. Prisijungimas (8), kai vartotojas yra autentifikuotas, pakeičia ut_type į USER_PROCESS , pakeičia ut_time , nustato ut_host ir ut_addr . Priklausomai nuo getty (8) ir prisijungimo (8), įrašai gali būti pateikiami ut_line vietoj pageidaujamo ut_pid .

Kai init (8) nustato, kad procesas baigėsi , jis nustato utmp įrašą ut_pid , nustato ut_type į DEAD_PROCESS ir išvalo ut_user , ut_host ir ut_time su nuliais baitais.

xterm (1) ir kiti terminaliniai emuliatoriai tiesiogiai kuria USER_PROCESS įrašą ir sugeneruoja ut_id naudodami du paskutinius du / dev / ttyp % c arba naudodami p / d / dev / pts / % d . Jei jie nustato DEAD_PROCESS už šį ID, jie perdirbami, kitaip jie sukuria naują įrašą. Jei jie gali, jie pažymės jį kaip DEAD_PROCESS, kai išeis , ir patariama, kad jie null ut_line , ut_time , ut_user ir ut_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 tai turėtų sukurti wtmp įrašus, kaip ir ftpd (8).

telnetd (8) nustato LOGIN_PROCESS įrašą ir palieka likusį įėjimą (8), kaip įprastai. Po telnet sesijos pabaigos telnetd (8) išvalo utmp tokiu būdu.

Wtmp failas įrašo visus prisijungimus ir atsijungimus. Jo formatas yra lygiai taip pat kaip utmp, išskyrus tai, kad nulinis vartotojo vardas rodo išeitį iš susijusio terminalo. Be to, terminalo pavadinimas "~" su vartotojo vardu "išjungimas" arba "paleisti iš naujo" reiškia sistemos išjungimą arba perkraukimą, o terminalų pavadinimų pora "|" / "}" įrašo seną / naują sistemos laiką, kai data (1) pakeičia jį. Wtmp palaiko prisijungimo (1), init (1), ir kai kurios getty (1) versijos. Nei viena iš šių programų nesudaro failo , taigi, jei ji pašalinta, įrašų saugojimas yra išjungtas.