Leer die Linux Command - wtmp

naam

UTMP, WTmp - login rekords

opsomming

# sluit

beskrywing

Die UTMP- lêer maak dit moontlik om inligting te ontdek oor wie tans die stelsel gebruik. Daar kan dalk meer gebruikers wees wat tans die stelsel gebruik, want nie alle programme gebruik UTmp-aanmelding.

Waarskuwing: UDMP moet nie geskryf word nie, omdat baie stelselprogramme (dwaas) afhang van die integriteit daarvan. U kan die logboeke van gevatte stelsel en modifikasies van stelsellêers gevaar as u enige skrif aan enige gebruiker laat skryf.

Die lêer is 'n reeks inskrywings met die volgende struktuur wat in die lêer ingesluit is (let op dat dit slegs een van verskeie definisies is; besonderhede hang af van die weergawe van die 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 REKENINGKUNDE 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status (kort int e_termination; / * proses beëindiging status. * / kort int e_exit; / * proses uitgang status. * /); struct utmp {kort ut_type; / * tipe aanmelding * / pid_t ut_pid; / * PID van aanmelding proses * / char ut_line [UT_LINESIZE]; / * toestel naam van tty - "/ dev /" * / char ut_id [4]; / * init id of afkorting. ttyname * / char ut_user [UT_NAMESIZE]; / * gebruikersnaam * / char ut_host [UT_HOSTSIZE]; / * host naam vir remote login * / struct exit_status ut_exit; / * Die uitgangstatus van 'n proses gemerk as DEAD_PROCESS. * / lang ut_sessie; / * sessie ID, gebruik vir vensterwerk * ​​/ struct timeval ut_tv; / * Tydinskrywing is gemaak. * / int32_t ut_addr_v6 [4]; / * IP-adres van afgeleë gasheer. * / char pad [20]; / * Gereserveer vir toekomstige gebruik. * /); / * Backward compatibility 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]

Hierdie struktuur gee die naam van die spesiale lêer wat verband hou met die gebruiker se terminaal, die gebruiker se aanmeldnaam en die tyd van inskrywing in die vorm van tyd (2). String velde word beëindig met '\ 0' as hulle korter is as die grootte van die veld.

Die eerste inskrywings wat ooit geskep is, is gevolg van init (8) verwerking inittab (5). Voordat 'n inskrywing verwerk word, verhoed init (8) utmp deur ut_type te stel na DEAD_PROCESS , die uit_user , ut_host en ut_time verwyder met nulbytes vir elke rekord wat ut_type nie DEAD_PROCESS of RUN_LVL is nie en waar geen proses met PID ut_pid bestaan ​​nie. As geen leë rekord met die nodige ut_id gevind word nie, skep init 'n nuwe een. Dit stel ut_id van die inittab, ut_pid en ut_time na die huidige waardes, en ut_type na INIT_PROCESS .

getty (8) bepaal die inskrywing deur die pid, verander ut_type na LOGIN_PROCESS , verander ut_time , stel ut_line , en wag vir die verbinding wat ingestel gaan word. aanmelding (8), nadat 'n gebruiker geverifieer is, verander ut_type na USER_PROCESS , verander ut_time en stel ut_host en ut_addr . Afhangende van getty (8) en login (8), kan rekords deur ut_line geplaas word in plaas van die voorkeur ut_pid .

Wanneer init (8) bevind dat 'n proses verlaat het, plaas dit sy utmp-inskrywing deur ut_pid , stel ut_type na DEAD_PROCESS , en verwyder ut_user , ut_host en ut_time met nul grepe.

xterm (1) en ander terminale emulators skep direk 'n USER_PROCESS rekord en genereer die ut_id deur die laaste twee letters van / dev / ttyp % c te gebruik of deur p % d vir / dev / pts / % d te gebruik . As hulle 'n DEAD_PROCESS vir hierdie ID vind, herwin hulle dit, anders skep hulle 'n nuwe inskrywing. As hulle dit kan, sal hulle dit merk as DEAD_PROCESS om op te tree en dit word aangeraai dat hulle ook null ut_line , ut_time , ut_user , en ut_host ook.

xdm (8) moet nie 'n UDMP-rekord skep nie, want daar is geen toegewyde terminaal nie. As dit een skep, sal dit lei tot foute, soos 'vinger: kan nie stat /dev/machine.dom' nie. Dit moet skep wtmp inskrywings, maar net soos ftpd (8) doen.

telnetd (8) stel 'n LOGIN_PROCESS inskrywing in en laat die res toe om in te teken (8) soos gewoonlik. Nadat die telnet-sessie beëindig het, word telnetd (8) op die beskikbare manier skoongemaak.

Die wtmp lêer rekords alle aanmeldings en logouts. Die formaat is presies soos UTMP, behalwe dat 'n nul gebruikersnaam 'n uitlog op die gepaardgaande terminale aandui. Verder dui die terminale naam "~" met gebruikersnaam "shutdown" of "reboot" aan 'n stelselstop of herlaai en die paar terminaal name "|" / "}" logs die ou / nuwe stelsel tyd wanneer datum (1) dit verander. wtmp word gehandhaaf deur login (1), init (1), en sommige weergawes van getty (1). Nie een van hierdie programme skep die lêer nie , dus as dit verwyder word, is rekordhouding afgeskakel.