Nume
utmp, wtmp - înregistrări de conectare
Rezumat
#include
Descriere
Fișierul utmp vă permite să descoperiți informații despre cine folosește în prezent sistemul. Pot exista mai mulți utilizatori care utilizează sistemul în prezent, deoarece nu toate programele utilizează utmp logging.
Avertisment: utmp nu trebuie să fie scris, deoarece multe programe de sistem (nebunește) depind de integritatea sa. Riscați fișierele false ale sistemului și modificările fișierelor de sistem dacă lăsați utmp scriitoare pentru orice utilizator.
Fișierul este o secvență de intrări cu următoarea structură declarată în fișierul include (rețineți că aceasta este doar una din mai multe definiții în jur, detaliile depind de versiunea libc):
#define UT_UNKNOWN 0 #define RUN_LVL 1 #definimare BOOT_TIME 2 #define NEW_TIME 3 #define OLD_TIME 4 #define INIT_PROCESS 5 #definire LOGIN_PROCESS 6 #define LOGIN_PROCESS 7 #define DEAD_PROCESS 7 #define DEAD_PROCESS 8 #define ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 Structură exit_status {short int e_termination; / * starea terminării procesului. * / short int e_exit; / * starea procesului de ieșire. * /}; struct utmp {scurtă ut_type; / * tipul de conectare * / pid_t ut_pid; / * pid de proces de conectare * / char ut_line [UT_LINESIZE]; / * numele dispozitivului tty - "/ dev /" * / char ut_id [4]; / * init id sau abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * numele de utilizator * / char ut_host [UT_HOSTSIZE]; / * nume de gazdă pentru conectare la distanță * / struct exit_status ut_exit; / * Starea de ieșire a unui proces marcat ca DEAD_PROCESS. * / ut_session lung; / * sesiune ID, folosit pentru ferestre * / struct timeval ut_tv; / * a fost introdus ora. * / int32_t ut_addr_v6 [4]; / * Adresa IP a gazdei la distanță. * / cartelă [20]; / * Rezervat pentru utilizare ulterioară. * /}; / * Hacks compatibilitate înapoi. * / #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_time ut_tv.tv_sec #define #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 [0]Această structură dă numele fișierului special asociat cu terminalul utilizatorului, numele de conectare al utilizatorului și timpul de autentificare sub formă de timp (2). Câmpurile de caractere sunt terminate cu '\ 0' dacă sunt mai scurte decât dimensiunea câmpului.
Primele intrări create vreodată rezultă din init (5) de procesare init (8). Înainte de procesarea unei intrări, init (8) curăță utmp prin setarea ut_type la DEAD_PROCESS , ștergerea ut_user , ut_host și ut_time cu octeți nula pentru fiecare înregistrare care ut_type nu este DEAD_PROCESS sau RUN_LVL și unde nu există nici un proces cu utid PID. Dacă nu se poate găsi o înregistrare goală cu ut_id necesar, init creează unul nou. Setează ut_id din inittab, ut_pid și ut_time la valorile curente și ut_type la INIT_PROCESS .
getty (8) localizează intrarea de către pid, modifică ut_type la LOGIN_PROCESS , modifică ut_time , set ut_line și așteaptă să se stabilească conexiunea. (8), după ce un utilizator a fost autentificat, modifică ut_type la USER_PROCESS , modifică ut_time și stabilește ut_host și ut_addr . În funcție de getty (8) și login (8), înregistrările pot fi localizate de ut_line în loc de preferatul ut_pid .
Atunci când init (8) constată că un proces a ieșit, el își localizează intrarea utmp prin ut_pid , stabilește ut_type la DEAD_PROCESS și șterge ut_user , ut_host și ut_time cu octeți nula.
xterm (1) și alte emulatori de terminale creează direct o înregistrare USER_PROCESS și generează ut_id utilizând ultimele două litere ale / dev / ttyp % c sau folosind p % d pentru / dev / pts / % d . Dacă găsesc un DEAD_PROCESS pentru acest id, îl reciclează, în caz contrar creează o intrare nouă. Dacă pot, o vor marca ca DEAD_PROCESS la ieșire și se recomandă ca aceștia să fie null ut_line , ut_time , ut_user și ut_host , de asemenea.
xdm (8) nu ar trebui să creeze o înregistrare utmp, deoarece nu există niciun terminal alocat. Permiterea de a crea unul va duce la erori, cum ar fi "deget: nu pot stat /dev/machine.dom". Ar trebui să creeze intrări wtmp, totuși, la fel ca ftpd (8).
telnetd (8) stabilește o intrare LOGIN_PROCESS și lasă restul să se conecteze (8) ca de obicei. După terminarea sesiunii telnet, telnetd (8) curăță utmp în modul descris.
Fișierul wtmp înregistrează toate datele de conectare și înregistrările. Formatul său este exact ca utmp, cu excepția faptului că un nume de utilizator nul indică o deconectare la terminalul asociat. Mai mult, numele terminalului "~" cu numele de utilizator "shutdown" sau "reboot" indică o oprire sau repornire a sistemului și perechea de nume de terminale "|" / "}" înregistrează timpul de sistem vechi / nou când data (1) îl modifică. wtmp este menținut de login (1), init (1) și de unele versiuni ale getty (1). Nici unul dintre aceste programe nu creează fișierul , deci dacă este eliminat, înregistrarea este dezactivată.