Naučte se příkaz Linux - wtmp

název

utmp, wtmp - přihlašovací záznamy

Synopse

#include

Popis

Soubor utmp umožňuje zjistit informace o tom, kdo v současné době používá systém. V systému je pravděpodobně více uživatelů, protože ne všechny programy používají utmp protokolování.

Upozornění: utmp nesmí být zapisovatelná, protože mnoho systémových programů (hloupě) závisí na jeho integritě. Riskujete padělané systémové logy a modifikace systémových souborů, pokud necháte utmp zapisovatelný každému uživateli.

Soubor je sekvence záznamů s následující strukturou deklarovanou v souboru include (poznamenat, že toto je pouze jedna z několika definic v okolí, podrobnosti závisí na verzi libc):

#define UT_UNKNOWN 0 #define RUN_LVL 1 #definovat BOOT_TIME 2 # vymezit NEW_TIME 3 # vymezit OLD_TIME 4 # vymezit INIT_PROCESS 5 # vymezit LOGIN_PROCESS 6 # vymezit USER_PROCESS 7 # vymezit DEAD_PROCESS 8 # vymezit ACCOUNTING 9 # vymezit UT_LINESIZE 12 # vymezit UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struktura exit_status {short int etermination; / * stav ukončení procesu. * / krátký int e_exit; / * proces ukončení stavu. * /}; struct utmp {krátké ut_type; / * typ přihlášení * / pid_t ut_pid; / * pid procesu přihlášení * / char ut_line [UT_LINESIZE]; / * název zařízení tty - "/ dev /" * / char ut_id [4]; / * init id nebo zkratka. ttyname * / char ut_user [UT_NAMESIZE]; / * uživatelské jméno * / char ut_host [UT_HOSTSIZE]; / * název hostitele pro vzdálené přihlášení * / struct exit_status ut_exit; / * Stav ukončení procesu označený jako DEAD_PROCESS. * / dlouhá ut_session; / * session ID, použitý pro okenování * / struct timeval ut_tv; / * bylo provedeno zadání času. * / int32_t ut_addr_v6 [4]; / * IP adresa vzdáleného hostitele. * / char podložka [20]; / * Vyhrazeno pro budoucí použití. * /}; / * Zpětná kompatibilita hacks. * / #definovat ut_name ut_user #ifndef _NO_UT_TIME # vymezení ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 [0]

Tato struktura uvádí název zvláštního souboru přidruženého k terminálu uživatele, přihlašovací jméno uživatele a čas přihlášení ve formě času (2). Políčka řetězců jsou ukončena znakem '\ 0', pokud jsou kratší než velikost pole.

První záznamy, které byly kdy vytvořeny, jsou výsledkem zpracování init (8) init (8). Před zpracováním položky však init (8) vyčistí utmp nastavením ut_type na DEAD_PROCESS , vymazáním ut_user , ut_host a ut_time s nulovými bajty pro každý záznam, který ut_type není DEAD_PROCESS nebo RUN_LVL a kde neexistuje žádný proces s PID ut_pid . Není-li nalezen žádný prázdný záznam s potřebným ut_id , init vytvoří nový. Nastaví ut_id z inittab, ut_pid a ut_time na aktuální hodnoty a ut_type na INIT_PROCESS .

getty (8) vyhledá záznam pidem , změní ut_type na LOGIN_PROCESS , změní ut_time , nastaví ut_line a čeká na vytvoření spojení. přihlášení (8) po ověření uživatele změní ut_type na USER_PROCESS , změní ut_time a nastaví ut_host a ut_addr . V závislosti na typu getty (8) a přihlášení (8) mohou být záznamy umístěny podle ut_line místo preferovaného ut_pid .

Když init (8) zjistí, že proces skončil, najde jeho utmp vstup ut_pid , nastaví ut_type na DEAD_PROCESS a vymaže ut_user , ut_host a ut_time s nulovými bajty.

xterm (1) a další terminálové emulátory přímo vytvářejí záznam USER_PROCESS a generují ut_id pomocí posledních dvou písmen / dev / ttyp % c nebo pomocí p % d pro / dev / pts / % d . Pokud naleznou ID DEAD_PROCESS , recyklují to, jinak vytvoří nový záznam. Pokud mohou, označí to jako DEAD_PROCESS při odchodu a je doporučeno, aby byly null ut_line , ut_time , ut_user a ut_host také.

xdm (8) by nemělo vytvářet záznam utmp, protože neexistuje přiřazený terminál. Pokud jej vytvoříte, bude to mít za následek chyby, jako například "prst: nemůľete uvést /dev/machine.dom". Mělo by však vytvářet položky wtmp, stejně jako ftpd (8).

telnetd (8) nastaví položku LOGIN_PROCESS a ostatní nechá přihlášení (8) jako obvykle. Po ukončení telnetové relace telnetd (8) čistým způsobem vyčistí utmp.

Soubor wtmp zaznamenává všechna přihlášení a odhlášení. Jeho formát je přesně jako utmp, s výjimkou toho, že nulové uživatelské jméno označuje odhlášení na příslušném terminálu. Dále název terminálu s názvem "shutdown" nebo "restart" označuje vypnutí nebo restartování systému a pár názvů terminálů "|" / "}" zaznamená starý / nový systémový čas, když datum (1) změní. wtmp je udržován přihlášením (1), init (1) a některými verzemi getty (1). Žádný z těchto programů nevytvoří soubor , takže pokud je odstraněn, nahrávání se vypne.