Skip to main content

Kako koristiti Unix Command Utmp u Linuxu

Python 2 - uvjetne naredbe (if, elif, else) #5 (Travanj 2025)

Python 2 - uvjetne naredbe (if, elif, else) #5 (Travanj 2025)
Anonim

utmp datoteka omogućuje otkrivanje informacija o tome tko trenutno koristi sustav. Moguće je da više korisnika trenutno koristi sustav, jer svi programi ne koriste utmp prijavu.

Upozorenje: utmp ne smije biti pisana, jer mnogi programi sustava (luđaka) ovise o njenom integritetu. Prilikom odlaska riskirate prijavljene datoteke sustava i izmjene datoteka sustavautmpmože se zapisivati ​​bilo kojem korisniku.

Datoteka je niz unosa sa sljedećom strukturom koja je deklarirana u datoteku za uključivanje (imajte na umu da je to samo jedna od nekoliko definicija oko, detalji ovise o verziji 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 RAČUNOVODSTVO 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * status prestanka procesa. * / kratki int e_exit; / * status izlaza iz procesa. * /}; struktur utmp {short ut_type; / * vrsta prijave * / pid_t ut_pid; / * pid prijava procesa * / char ut_line UT_LINESIZE; / * naziv uređaja tty - "/ dev /" * / char ut_id 4; / * init id ili skraćenica. ttyname * / char ut_user UT_NAMESIZE; / * korisničko ime * / char ut_host UT_HOSTSIZE; / * naziv hosta za daljinsku prijavu * / struct exit_status ut_exit; / * Izlazni status procesa označen kao DEAD_PROCESS. * / dugo ut_session; / * ID sesije, koji se koristi za prozor * / struct timeval ut_tv; / * unos vremena. * / int32_t ut_addr_v6 4; / * IP adresa udaljenog računala. * / char pad 20; / * Rezervirano za buduću uporabu. * /}; / * Povratak kompatibilnost 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

Ova struktura daje naziv posebne datoteke povezane s korisnikovim terminalom, korisničko ime za prijavu i vrijeme prijave u oblikuvrijeme(2). Polja za nizove prestaju s'' ako su kraće od veličine polja.

Prvi unosi ikad nastali su rezultat u tome (8) obradu inittab (5). Prije nego što se neki unos obrađuje, u tome (8) čišćenje utmp postavljanjemut_type doDEAD_PROCESS, čišćenjeut_user, ut_host, iut_time s null bajtovima za svaki zapis kojiut_type nijeDEAD_PROCESS iliRUN_LVL i gdje nema procesa s PID-omut_pid postoji. Ako nema praznih zapisa s potrebnimut_id može se pronaći, init stvara novu. Postavljaut_id od inittab,ut_pid iut_time na trenutne vrijednosti iut_type doINIT_PROCESS.

Getty (8) pronalazi unos na pid, promjeneut_type doLOGIN_PROCESS, promjeneut_time, postavljaut_line, i čeka uspostavljanje veze. prijaviti se (8), nakon što korisnik bude ovjeren, mijenja seut_type doUSER_PROCESS, promjeneut_time, i postavljaut_host iut_addr, Ovisno o Getty (8) i prijaviti se (8), zapisi mogu biti locirani dout_line umjesto što je poželjnout_pid.

Kada u tome (8) utvrdi da je proces izašao, smješta se u utmp ulazut_pid, postavljaut_type doDEAD_PROCESS, i briše seut_user, ut_host iut_time s nulti bajtovima.

xterm (1) i drugi emulatori terminala izravno stvaraju aUSER_PROCESS snimiti i generiratiut_id pomoću posljednja dva slova/ Dev / ttyp % c ili pomoćup % d za/ dev / bodova / % d , Ako pronađu aDEAD_PROCESS za ovaj ID, recikliraju ih, inače stvaraju novi unos. Ako mogu, označit će ga kaoDEAD_PROCESS na izlasku i savjetuje se da su nuli ut_line,ut_time, ut_user, iut_host također.

XDM (8) ne bi trebali stvoriti utmp zapis, jer nema dodijeljenog terminala. Ako ga izradite, to će rezultirati pogreškama, kao što je "prst: ne može stati /dev/machine.dom". Trebao bi stvoriti unose wtmp, baš kao i ftpd (8).

telnetd (8) postavlja aLOGIN_PROCESS ulaz i ostavlja ostatak prijaviti se (8) kao i obično. Nakon završetka telnet sesije, telnetd (8) čisti utmp na opisani način.

wtmp datoteka bilježi sve prijave i odjavu. Njegov format je upravo onakavutmp osim što null korisničko ime označava odjavu na povezanom terminalu. Nadalje, ime terminala'~'s korisničkim imenom"ugasiti" ili"ponovno podizanje sustava" označava isključivanje ili ponovno pokretanje sustava i par terminalskih imena'|'/'}' prijavljuje stari / novi sustav vrijeme kada datum (1) mijenja.wtmp održava se prijaviti se (1), u tome (1), a neke inačice Getty (1). Nijedan od tih programa ne stvara datoteku, pa ako je uklonjena, zapisivanje je isključeno.