oracular (5) wtmp.5.gz

Provided by: manpages-ro_4.23.1-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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.