Skip to main content

Cum se utilizează comanda Unix Utmp în Linux

Comanda UNIX grep (Mai 2024)

Comanda UNIX grep (Mai 2024)
Anonim

utmp fișierul 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.

Avertizare: 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ă plecațiutmpscriere la 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 formatimp(2). Câmpurile de caractere sunt terminate cu'' dacă acestea sunt mai scurte decât dimensiunea câmpului.

Primele înregistrări create vreodată rezultă din init (8) de prelucrare inittab (5). Înainte de procesarea unei intrări, init (8) curata utmp prin setareut_type laDEAD_PROCESS, compensareut_user, ut_host, șiut_time cu octeți nula pentru fiecare înregistrare careut_type nu esteDEAD_PROCESS sauRUN_LVL și în cazul în care nici un proces cu PIDut_pid există. Dacă nu există nici o înregistrare goală cu necesarulut_id pot fi găsite, init creează unul nou. Se stabileșteut_id de la inittab,ut_pid șiut_time la valorile curente șiut_type laINIT_PROCESS.

getty (8) localizează intrarea de către pid, modificăriut_type laLOGIN_PROCESS, schimbăriut_time, seturiut_line, și așteaptă să se stabilească conexiunea. Logare (8), după ce un utilizator a fost autentificat, se modificăut_type laUSER_PROCESS, schimbăriut_time, și seturiut_host șiut_addr. Depinde de getty (8) și Logare (8), înregistrările pot fi localizate laut_line în loc de preferabilut_pid.

Cand init (8) constată că un proces a ieșit, localizează intrarea lui utmput_pid, seturiut_type laDEAD_PROCESS, și se curățăut_user, ut_host șiut_time cu octeți nulați.

xterm (1) și alți emulatori de terminale creează direct aUSER_PROCESS înregistrați și generațiut_id utilizând ultimele două litere din/ Dev / ttyp % c sau prin utilizareap % d pentru/ dev / pts / % d . Dacă găsesc aDEAD_PROCESS pentru acest id, îl reciclează, altfel ei creează o intrare nouă. Dacă pot, o vor marcaDEAD_PROCESS la ieșire și se recomandă ca acestea să nu fie valabile ut_line,ut_time, ut_user, șiut_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 înregistrări wtmp, deși, la fel ftpd (8).

telnetd (8) stabilește aLOGIN_PROCESS intrare și lasă restul la Logare (8) ca de obicei. După terminarea sesiunii telnet, telnetd (8) curăță utmp în modul descris.

wtmp fișierul înregistrează toate datele de conectare și înregistrările. Formatul său este exact cautmp cu excepția faptului că un nume de utilizator nul indică o deconectare la terminalul asociat. Mai mult, numele terminalului'~'cu numele de utilizator"închide" sau„Repornire“ indică o oprire sau repornire a sistemului și o pereche de nume de terminale'|'/'}' înregistrează timpul de sistem vechi / nou când Data (1) o schimbă.wtmp este menținută de Logare (1), init (1) și unele versiuni ale lui getty (1). Nici unul dintre aceste programe nu creează fișierul, deci dacă este eliminat, înregistrarea este dezactivată.