Provided by: manpages-ro_4.27.0-1_all bug

NUME

       utmp, wtmp - înregistrări de autentificare

SINOPSIS

       #include <utmp.h>

DESCRIERE

       Fișierul  utmp  permite aflarea de informații despre cine utilizează în prezent sistemul. Este posibil să
       existe mai mulți utilizatori care utilizează în prezent sistemul, deoarece nu toate programele utilizează
       jurnalizarea utmp.

       Avertisment: utmp nu trebuie să poată fi scris de către clasa de utilizatori  „other”  (alții),  deoarece
       multe  programe  de sistem depind (în mod nebunesc) de integritatea sa. Riscați să falsificați fișiere de
       jurnal de sistem și să modificați fișiere de sistem dacă lăsați utmp  cu  permisiuni  de  scriere  pentru
       orice alt utilizator decât proprietarul și grupul proprietar al fișierului.

       Fișierul  este  o secvență de structuri utmp, declarate după cum urmează în <utmp.h> (rețineți că aceasta
       este doar una dintre cele câteva definiții existente; detaliile depind de versiunea de libc):

           /* Valori pentru câmpul ut_type, de mai jos */

           #define EMPTY         0 /* Înregistrarea nu conține informații valide
                                      (cunoscută anterior ca UT_UNKNOWN pe Linux) */
           #define RUN_LVL       1 /* Schimbarea nivelului de execuție a sistemului (a se vedea
                                      init(1)) */
           #define BOOT_TIME     2 /* Timpul de pornire a sistemului (în ut_tv) */
           #define NEW_TIME      3 /* Timpul după schimbarea ceasului sistemului
                                      (în ut_tv) */
           #define OLD_TIME      4 /* Timpul înainte de schimbarea ceasului sistemului
                                      (în ut_tv) */
           #define INIT_PROCESS  5 /* Proces generat de init(1) */
           #define LOGIN_PROCESS 6 /* Proces de lider de sesiune pentru autentificarea utilizatorului */
           #define USER_PROCESS  7 /* Proces normal */
           #define DEAD_PROCESS  8 /* Proces terminat */
           #define ACCOUNTING    9 /* Neimplementat */

           #define UT_LINESIZE      32
           #define UT_NAMESIZE      32
           #define UT_HOSTSIZE     256

           struct exit_status {              /* Tip pentru ut_exit, de mai jos */
               short e_termination;          /* Starea de terminare a procesului */
               short e_exit;                 /* Starea de ieșire a procesului */
           };

           struct utmp {
               short   ut_type;              /* Tipul de înregistrare */
               pid_t   ut_pid;               /* PID-ul procesului de autentificare */
               char    ut_line[UT_LINESIZE]; /* Numele dispozitivului tty - „/dev/” */
               char    ut_id[4];             /* Sufixul numelui terminalului,
                                                sau ID-ul inittab(5) */
               char    ut_user[UT_NAMESIZE]; /* Nume utilizator */
               char    ut_host[UT_HOSTSIZE]; /* Numele de gazdă pentru autentificarea de la distanță
                                                sau versiunea nucleului pentru mesajele de la
                                                nivelul de execuție */
               struct  exit_status ut_exit;  /* Starea de ieșire a unui proces
                                                marcat ca DEAD_PROCESS; nu
                                                este utilizat de Linux init(1) */
               /* Câmpurile ut_session și ut_tv trebuie să aibă aceeași dimensiune atunci când
                  sunt compilate pe 32 și 64 de biți. Acest lucru permite partajarea
                  fișierelor de date și a memoriei partajate între aplicațiile pe 32 și 64 de biți. */
           #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
               int32_t ut_session;           /* ID-ul sesiunii (getsid(2)),
                                                utilizat pentru deschiderea ferestrelor */
               struct {
                   int32_t tv_sec;           /* Secunde */
                   int32_t tv_usec;          /* Microsecunde */
               } ut_tv;                      /* Ora la care s-a făcut înregistrarea */
           #else
                long   ut_session;           /* ID-ul sesiunii */
                struct timeval ut_tv;        /* Ora la care s-a făcut înregistrarea */
           #endif

               int32_t ut_addr_v6[4];        /* Adresa de internet a gazdei de la
                                                distanță; adresa IPv4 folosește
                                                doar ut_addr_v6[0] */
               char __unused[20];            /* Rezervat pentru utilizare viitoare */
           };

           /* Trucuri de compatibilitate retroactivă */
           #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]

       Această structură indică  numele  fișierului  special  asociat  terminalului  utilizatorului,  numele  de
       autentificare  al  utilizatorului  și  ora  de  autentificare  sub forma time(2). Câmpurile de tip șir de
       caractere se termină cu un octet nul („\0”) dacă sunt mai scurte decât dimensiunea câmpului.

       Primele intrări care sunt create provin întotdeauna din procesarea de către  init(1)  a  lui  inittab(5).
       Totuși,  înainte  ca  o  intrare  să  fie  procesată,  init(1) curăță utmp prin stabilirea lui ut_type la
       DEAD_PROCESS, ștergând ut_user, ut_host și ut_time cu octeți nule pentru  fiecare  înregistrare  în  care
       ut_type  nu  este DEAD_PROCESS sau RUN_LVL și în care nu există un proces cu PID ut_pid. În cazul în care
       nu se găsește nici o înregistrare goală cu ut_id necesar, init(1) creează una nouă. Definește  ut_id  din
       inittab, ut_pid și ut_time la valorile curente, iar ut_type la INIT_PROCESS.

       mingetty(8)  (sau  agetty(8))  localizează  intrarea după PID, schimbă ut_type în LOGIN_PROCESS, modifică
       ut_time, stabilește ut_line și așteaptă stabilirea conexiunii.  login(1), după ce un  utilizator  a  fost
       autentificat,  modifică  ut_type  în  USER_PROCESS, modifică ut_time și stabilește ut_host și ut_addr. În
       funcție de mingetty(8) (sau agetty(8)) și login(1), înregistrările pot fi localizate prin ut_line în  loc
       de preferabilul ut_pid.

       Când  init(1) constată că un proces a ieșit, localizează intrarea utmp prin ut_pid, stabilește ut_type la
       DEAD_PROCESS și golește ut_user, ut_host și ut_time cu octeți nuli.

       xterm(1) și alte emulatoare de terminale creează direct o înregistrare USER_PROCESS  și  generează  ut_id
       utilizând  șirul  care  sufixează  o  parte  din  numele  terminalului  (caracterele  care  urmează  după
       /dev/[pt]ty). Dacă găsesc un DEAD_PROCESS pentru acest ID, îl reciclează, în caz contrar creează  o  nouă
       înregistrare.  Dacă  pot,  o  marchează  ca DEAD_PROCESS la ieșire și se recomandă să completeze ut_line,
       ut_time, ut_user și ut_host cu zerouri, de asemenea.

       telnetd(8) stabilește o intrare LOGIN_PROCESS și lasă restul în seama lui login(1), ca de obicei. După ce
       sesiunea telnet se încheie, telnetd(8) curăță utmp în modul descris.

       Fișierul wtmp înregistrează toate intrările și ieșirile. Formatul său este exact  ca  utmp,  cu  excepția
       faptului  că  un  nume  de  utilizator nul indică o deconectare de la terminalul asociat. În plus, numele
       terminalului ~ cu numele de utilizator  shutdown  sau  reboot  indică  o  închidere  sau  o  repornire  a
       sistemului,  iar  perechea de nume de terminale |/} înregistrează ora veche/nouă a sistemului atunci când
       date(1) o modifică. wtmp este întreținut de login(1), init(1)  și  de  unele  versiuni  de  getty(8)  (de
       exemplu,  mingetty(8) sau agetty(8)). Nici unul dintre aceste programe nu creează fișierul, astfel încât,
       dacă este eliminat, păstrarea înregistrărilor este oprită.

FIȘIERE

       /var/run/utmp
       /var/log/wtmp

VERSIUNI

       POSIX.1 nu specifică o structură utmp, ci una numită utmpx (ca parte a extensiei  XSI),  cu  specificații
       pentru câmpurile ut_type, ut_pid, ut_line, ut_id, ut_id, ut_user și ut_tv. POSIX.1 nu specifică lungimile
       câmpurilor ut_line și ut_user.

       Linux definește structura utmpx ca fiind aceeași cu structura utmp.

STANDARDE

       Linux.

ISTORIC

       Intrările  Linux  utmp  nu  sunt  conforme nici cu v7/BSD, nici cu System V; ele sunt un amestec al celor
       două.

       v7/BSD are mai puține câmpuri; cel mai important este că nu are ut_type, care face ca  programele  native
       de  tip  v7/BSD să afișeze (de exemplu) intrări moarte sau de conectare. Mai mult, nu există un fișier de
       configurare care să aloce sloturi pentru sesiuni. BSD face acest  lucru  deoarece  îi  lipsesc  câmpurile
       ut_id.

       În  Linux  (ca  și  în System V), câmpul ut_id al unei înregistrări nu se va schimba niciodată odată ce a
       fost definit, ceea ce rezervă acel slot fără a fi nevoie de un fișier de configurare. Ștergerea  câmpului
       ut_id  poate  duce  la  condiții  de  competiție  de  date  care să conducă la intrări utmp corupte și la
       potențiale găuri de securitate. Ștergerea câmpurilor menționate mai sus prin umplerea lor cu octeți  nuli
       nu  este  cerută de semantica System V, dar face posibilă rularea multor programe care presupun semantica
       BSD și care nu modifică utmp. Linux utilizează convențiile BSD pentru conținutul liniilor, așa  cum  este
       documentat mai sus.

       System V nu are câmpurile ut_host sau ut_addr_v6.

NOTE

       Spre  deosebire  de alte sisteme, unde jurnalizarea utmp poate fi dezactivată prin eliminarea fișierului,
       utmp trebuie să existe întotdeauna pe Linux. Dacă doriți să dezactivați who(1),  nu  faceți  ca  utmp  să
       poată fi citit de toată lumea.

       Formatul  fișierului  este dependent de mașină, astfel încât se recomandă ca acesta să fie procesat numai
       pe arhitectura mașinii pe care a fost creat.

       Rețineți că pe platformele biarch, adică pe sistemele care pot rula atât aplicații pe 32 de biți, cât  și
       pe  64  de biți (x86-64, ppc64, s390x etc.), ut_tv are aceeași dimensiune în modul pe 32 de biți ca și în
       modul pe 64 de biți. Același lucru este valabil și  pentru  ut_session  și  ut_time,  dacă  acestea  sunt
       prezente.  Acest  lucru  permite  ca  fișierele  de  date  și  memoria  partajată  să fie partajate între
       aplicațiile pe 32 și 64 de biți.  Acest lucru se realizează prin schimbarea  tipului  lui  ut_session  în
       int32_t,  iar cel al lui ut_tv într-o structură cu două câmpuri int32_t tv_sec și tv_usec. Deoarece ut_tv
       poate să nu fie același lucru cu struct timeval, atunci în loc de apelul:

           gettimeofday((struct timeval *) &ut.ut_tv, NULL);

       se recomandă următoarea metodă de definire a acestui câmp:

           struct utmp ut;
           struct timeval tv;

           gettimeofday(&tv, NULL);
           ut.ut_tv.tv_sec = tv.tv_sec;
           ut.ut_tv.tv_usec = tv.tv_usec;

CONSULTAȚI ȘI

       ac(1), date(1), init(1), last(1),  login(1),  logname(1),  lslogins(1),  users(1),  utmpdump(1),  who(1),
       getutent(3), getutmp(3), login(3), logout(3), logwtmp(3), updwtmp(3)

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  NICIO
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                          utmp(5)