Saznajte Linux Command - wtmp

Ime

utmp, wtmp - prijave za prijavljivanje

Sinopsis

#include

Opis

Datoteka utmp dozvoljava otkrivanju informacija o tome ko trenutno koristi sistem. Može biti više korisnika koji trenutno koriste sistem, jer svi programi ne koriste utmp logging.

Upozorenje: utmp ne sme biti moguće pisati, jer mnogi sistemski programi (glupo) zavise od njegovog integriteta. Vi rizikujete lažne sistemske log fajlove i modifikacije sistemskih datoteka ako ostavite utmp da se može pisati za bilo kog korisnika.

Datoteka je redosled stavki sa sljedećom strukturom deklarisanom u datoteku uključite (obratite pažnju da je ovo samo jedna od nekoliko definicija oko, detalji zavise od verzije 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 ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {kratko int e_termination; / * status završetka procesa. * / kratko int e_exit; / * status izlaznog procesa. * /}; struct utmp {kratko ut_type; / * tip login * / pid_t ut_pid; / * pid procesa prijavljivanja * / char ut_line [UT_LINESIZE]; / * ime uređaja tty - "/ dev /" * / char ut_id [4]; / * init id ili abbrevi. ttyname * / char ut_user [UT_NAMESIZE]; / * korisničko ime * / char ut_host [UT_HOSTSIZE]; / * hostname za udaljeno prijavljivanje * / struct exit_status ut_exit; / * Status izlaznog procesa označenog kao DEAD_PROCESS. * / dugo ut_session; / * session ID, koristi se za prozore * / struct timeval ut_tv; / * vremenski unos je izvršen. * / int32_t ut_addr_v6 [4]; / * IP adresa udaljenog hosta. * / char pad [20]; / * Rezervisano za buduću upotrebu. * /}; / * Hack kompatibilnost 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]

Ova struktura daje ime specijalnog fajla povezanog sa korisničkim terminalom, korisničkim korisničkim imenom i vremenom prijavljivanja u obliku vremena (2). Niz polja se prekida sa '\ 0' ako su kraći od veličine polja.

Prvi unosi ikada stvoreni rezultat su init (8) obrade inittab (5). Pre nego što se unese proces, init (8) očisti utmp tako što podesi ut_type na DEAD_PROCESS , čišćenje ut_user , ut_host i ut_time sa null bajtovima za svaki zapis koji ut_type nije DEAD_PROCESS ili RUN_LVL i gdje nema procesa sa PID ut_pid . Ako nema praznog zapisa sa potrebnim ut_id , init kreira novu. On postavlja ut_id od inittab, ut_pid i ut_time do trenutnih vrijednosti, a ut_type do INIT_PROCESS .

getty (8) locira unos od strane pid-a, menja ut_type na LOGIN_PROCESS , promijeni ut_time , postavlja ut_line , i čeka da se veza uspostavi. login (8), nakon što je korisnik bio autentifikovan, menja ut_type u USER_PROCESS , mijenja ut_time , a postavlja ut_host i ut_addr . Zavisno od getty (8) i login (8), zapisi mogu biti locirani po ut_line umjesto preferirajućeg ut_pid .

Kada init (8) ustanovi da je proces izašao, locira svoj utmp ulaz od ut_pid , postavlja ut_type u DEAD_PROCESS , i briše ut_user , ut_host i ut_time sa null bajtovima.

xterm (1) i drugi terminalski emulatori direktno kreiraju zapis USER_PROCESS i generišu ut_id koristeći poslednja dva slova / dev / ttyp % c ili koristeći p % d za / dev / pts / % d . Ako pronadju DEAD_PROCESS za ovaj id, recikliraju ga, u suprotnom kreiraju novi unos. Ako to mogu, označiti će ga kao DEAD_PROCESS na izlazu i savjetuje se da null ut_line , ut_time , ut_user i ut_host .

xdm (8) ne bi trebalo da kreira zapis utmp, jer ne postoji dodeljeni terminal. Omogućavanje stvaranja jednog bi rezultiralo greškama, kao što je "prst: ne može stat /dev/machine.dom". Trebalo bi kreirati wtmp unose, mada, isto kao ftpd (8).

telnetd (8) postavlja unos LOGIN_PROCESS i ostavlja ostalo da se prijavljuje (8) kao i obično. Nakon završetka telnet sesije, telnetd (8) očisti utmp na opisani način.

Datoteka wtmp beleži sve prijave i logovanja. Njegov format je upravo kao utmp, osim što nultno korisničko ime označava odjavu na pridruženom terminalu. Štaviše, naziv terminala "~" sa korisničkim imenom "shutdown" ili "reboot" označava sistem shutdown ili restartovanje i par imena terminala "|" / "}" prikazuje staro / novo sistemsko vreme kada datum (1) promeni. wtmp se održava logovanjem (1), init (1) i nekim verzijama getty (1). Nijedan od ovih programa ne kreira datoteku , pa ako je uklonjen, snimanje je isključeno.