Naučte sa príkaz Linux - wtmp

názov

utmp, wtmp - prihlasovacie záznamy

synopse

#include

popis

Súbor utmp umožňuje nájsť informácie o tom, kto v súčasnosti používa systém. V súčasnosti môže systém používať viac používateľov, pretože nie všetky programy používajú protokol utmp.

Upozornenie: utmp nesmie byť zapisovateľná, pretože mnoho systémových programov (pošetilo) závisí od jeho integrity. Riskujete falošné logfily systému a modifikácie systémových súborov, ak necháte utmp zapisovateľný ľubovoľnému používateľovi.

Súbor je sekvencia položiek s nasledujúcou štruktúrou deklarovanou v súbore zahrnúť (všimnite si, že toto je len jedna z niekoľkých definícií okolo, detaily závisia od verzie libc):

#define UT_UNKNOWN 0 # vymedziť RUN_LVL 1 # vymedziť BOOT_TIME 2 # vymedziť NEW_TIME 3 # vymedziť OLD_TIME 4 # vymedziť INIT_PROCESS 5 # vymedziť LOGIN_PROCESS 6 # vymedziť USER_PROCESS 7 # vymedziť DEAD_PROCESS 8 # vymedziť ÚČTOVANIE 9 # vymedziť UT_LINESIZE 12 # definovať UT_NAMESIZE 32 #define UT_HOSTSIZE 256 štruktúra exit_status {short int etermination; / * stav ukončenia procesu. * / krátky int e_exit; / * proces ukončenie stavu. * /}; štrukt utmp {krátka ut_type; / * typ prihlásenia * / pid_t ut_pid; / * pid prihlasovacieho procesu * / char ut_line [UT_LINESIZE]; / * názov zariadenia tty - "/ dev /" * / char ut_id [4]; / * init id alebo skratka. ttyname * / char ut_user [UT_NAMESIZE]; / * užívateľské meno * / char ut_host [UT_HOSTSIZE]; / * názov hostiteľa pre vzdialené prihlásenie * / struct exit_status ut_exit; / * Stav ukončenia procesu označený ako DEAD_PROCESS. * / long ut_session; / * ID relácie, použitý pre okná * / struct timeval ut_tv; / * bola zadaná časová lehota. * / int32_t ut_addr_v6 [4]; / * IP adresa vzdialeného hostiteľa. * / podložka [20]; / * Vyhradené pre budúce použitie. * /}; / * Spätné kompatibility hacks. * / #definovať ut_name ut_user #ifndef _NO_UT_TIME # vymedziť ut_time ut_tv.tv_sec #endif # vymedziť ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 [0]

Táto štruktúra uvádza názov špeciálneho súboru priradeného k terminálu používateľa, prihlasovacie meno používateľa a čas prihlásenia vo forme času (2). Polia reťazca sú ukončené pomocou '\ 0', ak sú kratšie ako veľkosť poľa.

Prvé záznamy, ktoré boli kedy vytvorené, sú výsledkom spracovania inittab (5) init (8). Pred spracovaním vstupu však init (8) vyčistí utmp nastavením ut_type na DEAD_PROCESS , vymazaním ut_user , ut_host a ut_time s nulovými bajtami pre každý záznam, ktorý ut_type nie je DEAD_PROCESS alebo RUN_LVL a kde neexistuje žiadny proces s PID ut_pid . Ak sa nenájde žiadny prázdny záznam s potrebným ut_id , init vytvorí nový. Nastavuje ut_id z inittab, ut_pid a ut_time na aktuálne hodnoty a ut_type na INIT_PROCESS .

getty (8) vyhľadá záznam pid, zmení ut_type na LOGIN_PROCESS , zmení ut_time , nastaví ut_line a čaká na vytvorenie spojenia. prihlásenie (8), po overení používateľa, zmení ut_type na USER_PROCESS , zmení ut_time a nastaví ut_host a ut_addr . V závislosti od typu getty (8) a prihlásenia (8) môžu byť záznamy umiestnené pomocou ut_line namiesto preferovanej ut_pid .

Keď init (8) zistí, že proces opustil, vyhľadá jeho utmp vstup ut_pid , nastaví ut_type na DEAD_PROCESS a vymaže ut_user , ut_host a ut_time s nulovými bajtami.

xterm (1) a ostatné emulátory terminálu priamo vytvoria záznam USER_PROCESS a vygenerujú ut_id pomocou posledných dvoch písmen / dev / ttyp % c alebo pomocou p % d pre / dev / pts / % d . Ak nájdu DEAD_PROCESS pre toto id, recyklujú to, inak vytvoria nový záznam. Ak môžu, označí to ako DEAD_PROCESS pri opustení a odporúča sa, aby boli null ut_line , ut_time , ut_user a ut_host .

xdm (8) by nemal vytvoriť záznam utmp, pretože neexistuje žiadny priradený terminál. Ak ho vytvoríte, výsledkom budú chyby, ako napríklad "prst: nemôže stať" /dev/machine.dom ". Mala by vytvárať položky wtmp, rovnako ako ftpd (8).

telnetd (8) nastaví položku LOGIN_PROCESS a zvyšok sa nechá prihlásiť (8) ako obvykle. Po ukončení telnetovej relácie telnetd (8) čistým spôsobom vyčistí utmp.

Súbor wtmp zaznamenáva všetky prihlásenia a odhlásenia. Jeho formát je presne taký ako utmp okrem toho, že nulové užívateľské meno označuje odhlásenie na príslušnom termináli. Navyše názov terminálu s názvom "shutdown" alebo "reboot" označuje vypnutie alebo reštart systému a pár názvov terminálov "|" / "}" zaznamená starý / nový systémový čas, keď sa dátum (1) zmení. wtmp je udržiavaný prihlásením (1), init (1) a niektorými verziami getty (1). Žiadny z týchto programov nevytvára súbor , takže ak je odstránený, nahrávanie sa vypne.