Ismerje meg a Linux parancsot - wtmp

Név

utmp, wtmp - bejelentkezési rekordok

Szinopszis

#include

Leírás

Az utmp fájl lehetővé teszi az információ felfedezését, hogy ki használja a rendszert. Lehet, hogy több felhasználó jelenleg használja a rendszert, mert nem minden program használ utmp naplózást.

Figyelmeztetés: az utmp nem írható, mert számos program (ostoba módon) az integritásától függ. Ön kockáztathatja a hamisított rendszer naplófájljait és a rendszerfájlok módosításait, ha bármely felhasználó számára írható utmp .

A fájl a beillesztett fájlban deklarált következő struktúrák sorrendje (megjegyzendő, hogy ez csak egy a több meghatározás közül, a részletek a libc verziójától függenek):

#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; / * folyamatlezárási állapot. * / short int e_exit; / * folyamat kilépési állapot. * /}; struktur utmp {short ut_type; / * bejelentkezés típusa * / pid_t ut_pid; / * pid bejelentkezési folyamat * / char ut_line [UT_LINESIZE]; / * a tty - "/ dev /" * / char ut_id eszköz neve [4]; / * init id vagy rövidített. ttyname * / char ut_user [UT_NAMESIZE]; / * felhasználónév * / char ut_host [UT_HOSTSIZE]; / * a gazdagép távoli bejelentkezéshez * / struct exit_status ut_exit; / * DEAD_PROCESS jelzésű folyamat kilépési állapota. * / hosszú ut_session; / * munkamenet-azonosító, amelyet az ablakok * / struct timeval ut_tv; / * időbejegyzés történt. * / int32_t ut_addr_v6 [4]; / * A távoli gép IP címe. * / char pad [20]; / * Fenntartva jövőbeni felhasználásra. * /}; / * Visszafelé kompatibilis 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]

Ez a struktúra adja meg a felhasználó termináljához társított speciális fájlt, a felhasználó bejelentkezési nevét és a bejelentkezési időt az idő formájában (2). A sztringmezők "\ 0" -al megszakadnak, ha rövidebbek a mező méreténél.

Az első létrehozott bejegyzések init (8) inittab feldolgozásából származnak (5). Egy bejegyzés feldolgozása előtt azonban az init (8) felmenti az utmpet az ut_type értékének a DEAD_PROCESS értékre történő beállításával , az ut_user , az ut_host és az ut_time törlése null bájtokkal minden olyan rekordhoz, amely ut_type nem DEAD_PROCESS vagy RUN_LVL, és ahol nincs folyamatban a PID ut_pid . Ha nincs üres rekord a szükséges ut_id-lel , az init létrehoz egy újat. Az ut_id értéket az inittab, ut_pid és ut_time értékektől az aktuális értékekig, ut_type pedig az INIT_PROCESS értékhez .

A getty (8) a pid bejegyzést helyezi el, az ut_type változást a LOGIN_PROCESS értékre , az ut_time értéket , az ut_line értéket állítja be , és várja meg a kapcsolat létrehozását. a bejelentkezéshez (8), miután a felhasználó hitelesített, ut_type változik a USER_PROCESS , ut_time változások, és ut_host és ut_addr . A getty (8) és a login (8) függvényében a rekordok az ut_line használatával helyezhetők el a preferált ut_pid helyett.

Amikor az init (8) úgy találja, hogy a folyamat kilépett, az ut_pid utmp bejegyzést találja , az ut_type értékét a DEAD_PROCESS értékre állítja , és az ut_user , ut_host és ut_time null bájtokkal törli.

Az xterm (1) és más terminál emulátorok közvetlenül létrehoznak egy USER_PROCESS rekordot, és generálják az ut_idet a / dev / ttyp % c utolsó két betűjével, vagy a / dev / pts / % d p % d használatával. Ha DEAD_PROCESS- t találnak erre az azonosítóra, újrahasznosítják, különben új bejegyzést hoznak létre. Ha tudják, a kimeneten DEAD_PROCESS jelöli őket, és tanácsos, hogy null ut_line , ut_time , ut_user és ut_host is legyenek.

Az xdm (8) nem hoz létre utmp rekordot, mert nincs hozzárendelt terminál. Ha létrehoz egy hibát, akkor hiba lép fel, például az "ujj: nem tud stat /dev/machine.dom". Wtmp bejegyzéseket kell létrehoznia, ugyanúgy, mint az ftpd (8).

A telnetd (8) LOGIN_PROCESS bejegyzést állít be, és hagyja a többit a bejelentkezéshez (8) a szokásos módon. A telnet-munkamenet befejezése után a telnetd (8) a fent leírt módon utmpot tisztít.

A wtmp fájl rögzíti az összes bejelentkezést és naplózást . Formátuma pontosan olyan, mint az utmp, kivéve, hogy egy null felhasználónév jelez egy kilépést a kapcsolódó terminálon. Továbbá a "shutdown" vagy a "reboot" felhasználónévvel rendelkező "~" terminálnév azt jelzi, hogy a rendszer leállt vagy újraindult, és a terminálok "|" / "}" naplózza a régi / új rendszeridőt, amikor a dátum (1) megváltoztatja. A wtmp a login (1), az init (1) és a getty (1) egyes verziói által fenntartott. Egyik program sem hozza létre a fájlt , ezért eltávolítás esetén a nyilvántartás le van tiltva.