Õpi Linuxi käsku - wtmp

Nimi

utmp, wtmp - sisselogimisdokumendid

Kokkuvõte

#include

Kirjeldus

Utmp- fail võimaldab leida teavet selle kohta, kes süsteemi praegu kasutab. Süsteemi võib praegu kasutada rohkem kasutajaid, kuna mitte kõik programmid kasutavad utmp logisid.

Hoiatus: utmp ei tohi olla kirjutatav, sest paljud süsteemiprogrammid (rumalalt) sõltuvad selle terviklikkusest. Kui olete jätnud utmpile kirjavahetuse mõnele kasutajale, võite riskida võltsitud süsteemi logifailide ja süsteemifailide muudatustega.

Fail on sisestuste faili deklareeritud järgmise kirjega järjestus (märkus, et see on ainult üks mitmest definitsioonist; andmed sõltuvad libc versioonist):

#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 {short int e_termination; / * protsessi lõpetamise olek. * / lühike int e_exit; / * protsessi lõpetamise olek. * /}; struct utmp {lühike ut_type; / * sisselogimis tüüp * / pid_t ut_pid; / * login protsessi pid * / char ut_line [UT_LINESIZE]; / * seadme nimi tty - "/ dev /" * / char ut_id [4]; / * init id või lühend. ttyname * / char ut_user [UT_NAMESIZE]; / * kasutajanimi * / char ut_host [UT_HOSTSIZE]; / * serveri kasutajanimi * / struct exit_status ut_exit; / * DEAD_PROCESS-i tähistatud protsessi väljumise olek. * / pikk ut_session; / * seansi ID, mida kasutatakse akna jaoks * / struct timeval ut_tv; / * sisestatud aeg. * / int32_t ut_addr_v6 [4]; / * Kaugvõõrke IP-aadress. * / char pad [20]; / * Reserveeritud kasutamiseks tulevikus. * /}; / * Tagasi ühilduvuse 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]

See struktuur annab kasutajaterminaga seotud erifaili nime, kasutaja sisselogimise nime ja sisselogimise aja vormingus (2). Stringiväljad lõpetatakse '\ 0'ga, kui need on väli suurusest lühemad.

Esimesed sissekanded on loodud init (8) inittab (5) töötlemise tulemusena. Enne sisestuse töötlemist, init (8) puhastab utmp, seadistades ut_type DEAD_PROCESS'ile , puhastades ut_user , ut_host ja ut_time nullbaitidega iga rekordi puhul, mille ut_type ei ole DEAD_PROCESS või RUN_LVL ja kus ükski PID ut_pid protsess puudub. Kui ei leitud vajalikku ut_id-tüüpi tühja kirjeid , siis init loob uue. See määrab ut_id from inittab, ut_pid ja ut_time praegustele väärtustele ja ut_type - INIT_PROCESS .

getty (8) leiab piduse sisestuse , muudab ut_type LOGIN_PROCESS'iks , muudab ut_time , määrab ut_line ja ootab ühenduse loomist. login (8), pärast kasutaja autentimist, muutub ut_type kasutajaks USER_PROCESS , muudab ut_time ja määrab ut_host ja ut_addr . Sõltuvalt Getty (8) ja sisselogimisandmete (8) võib arvestus asuda ut_line asemel eelistatud ut_pid .

Kui init (8) leiab, et protsess on lahkunud, otsib ta utmp-kirje ut_pid , seab ut_type DEAD_PROCESS'ile ja puhastab ut_user , ut_host ja ut_time null-baitidega.

xterm (1) ja muud terminali emulatsioonid loovad otse USER_PROCESSi rekordi ja genereerivad ut_id , kasutades / dev / ttyp % c kaks viimast tähte / dev / pts / % d kasutades p % d . Kui nad leiavad selle ID jaoks DEAD_PROCESSi , nad recycle seda, muidu nad loovad uue kirje. Kui nad suudavad, märgivad nad seda kui DEAD_PROCESSi väljumiseks ja on soovitatav, et need tühistaksid ka ut_line , ut_time , ut_user ja ut_host .

xdm (8) ei tohiks luua utmp-protokolli, sest pole määratud terminali. Selle loomisel võib tekkida vigu, näiteks sõrme: can not stat /dev/machine.dom. Kuid see peaks looma wtmp-kirjeid, nagu ftpd (8).

telnetd (8) loob sisselogimise LOGIN_PROCESS ja jätab kõik ülejäänud, et logida (8) nagu tavaliselt. Pärast telneti seansi lõppu tühjendab telnetd (8) kirjeldatud viisil utmp.

Wtmp- fail registreerib kõik sisselogimised ja logoutused. Selle vorming on täpselt nagu utmp, välja arvatud see, et null-kasutaja nimi tähistab seostatud terminali väljalogimist. Lisaks sellele näitab terminali nimi "~" kasutajanimega "shutdown" või "reboot" süsteemide seiskamist või taaskäivitamist ning terminali parameetrite paari "|" / "}" logib vana / uue süsteemi aja, kui kuupäev (1) seda muudab. wtmp säilitatakse sisselogimise (1), init (1) ja mõne getty (1) versiooni. Kumbki neist programmidest ei loo faili , seega kui see eemaldatakse, on salvestamine välja lülitatud.