Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       getpwnam, getpwnam_r, getpwuid, getpwuid_r - obține intrarea din fișierul de parole

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <sys/types.h>
       #include <pwd.h>

       struct passwd *getpwnam(const char *name);
       struct passwd *getpwuid(uid_t uid);

       int getpwnam_r(const char *restrict name, struct passwd *restrict pwd,
                      char buf[restrict .buflen], size_t buflen,
                      struct passwd **restrict result);
       int getpwuid_r(uid_t uid, struct passwd *restrict pwd,
                      char buf[restrict .buflen], size_t buflen,
                      struct passwd **restrict result);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       getpwnam_r(), getpwuid_r():
           _POSIX_C_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIERE

       Funcția  getpwnam()  returnează  un  indicator  către  o  structură  care conține câmpurile defalcate ale
       înregistrării din baza de date de parole (de exemplu, fișierul local de parole /etc/passwd, NIS și  LDAP)
       care corespunde numelui de utilizator name.

       Funcția  getpwuid()  returnează  un  indicator  către  o  structură  care conține câmpurile defalcate ale
       înregistrării din baza de date a parolelor care corespunde ID-ului utilizatorului uid.

       Structura passwd este definită în <pwd.h> după cum urmează:

           struct passwd {
               char   *pw_name;       /* numele utilizatorului */
               char   *pw_passwd;     /* parola utilizatorului */
               uid_t   pw_uid;        /* identificatorul utilizatorului */
               gid_t   pw_gid;        /* identificatorul grupului */
               char   *pw_gecos;      /* informații despre utilizator */
               char   *pw_dir;        /* directorul personal „acasă” */
               char   *pw_shell;      /* programul shell */
           };

       Consultați passwd(5) pentru mai multe informații despre aceste câmpuri.

       Funcțiile getpwnam_r() și getpwuid_r()  obțin  aceleași  informații  ca  getpwnam()  și  getpwuid(),  dar
       stochează  structura passwd recuperată în spațiul indicat de pwd.  Câmpurile de șir de caractere indicate
       de membrii structurii passwd sunt stocate în memoria tampon buf de dimensiune buflen. Un indicator  către
       rezultat  (în  caz  de succes) sau NULL (în cazul în care nu a fost găsită nicio intrare sau s-a produs o
       eroare) este stocat în *result.

       Apelarea

           sysconf(_SC_GETPW_R_SIZE_MAX)

       returnează fie -1, fără a modifica errno, fie o dimensiune inițială sugerată pentru  buf;  (dacă  această
       dimensiune  este  prea  mică,  apelul eșuează cu ERANGE, caz în care apelantul poate încerca din nou cu o
       memorie tampon mai mare).

VALOAREA RETURNATĂ

       Funcțiile getpwnam() și getpwuid() returnează un  indicator  către  o  structură  passwd  sau  NULL  dacă
       intrarea  corespunzătoare  nu  este  găsită  sau  dacă  apare  o eroare.  Dacă apare o eroare, errno este
       configurată pentru a indica eroarea. Dacă se dorește verificarea errno după apel, aceasta trebuie să  fie
       stabilită la zero înainte de apel.

       Valoarea  returnată  poate  indica  o  zonă  statică  și  poate fi suprascrisă prin apeluri ulterioare la
       getpwent(3), getpwnam() sau getpwuid(). (Nu pasați indicatorul returnat la free(3).)

       În caz de succes, funcțiile getpwnam_r() și getpwuid_r() returnează zero și  stabilesc  *result  la  pwd.
       Dacă  nu  a  fost  găsită  nicio  înregistrare  de parolă corespunzătoare, aceste funcții returnează 0 și
       stochează NULL în *result.  În caz de eroare, se returnează un număr de eroare, iar NULL este  stocat  în
       *rezultat.

ERORI-IEȘIRE

       0 sau ENOENT sau ESRCH sau EBADF sau EPERM sau EPERM sau ...
              Datele name sau uid specificate nu au fost găsite.

       EINTR  A fost captat un semnal; a se vedea signal(7).

       EIO    Eroare de In/Ieș.

       EMFILE Limita per proces a numărului de descriptori de fișiere deschise a fost atinsă.

       ENFILE Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă.

       ENOMEM Memorie insuficientă pentru alocarea structurii passwd.

       ERANGE Spațiul de memorie tampon furnizat este insuficient.

NOTĂ

       Baza  de  date  a  parolelor  utilizatorilor se referă în principal la /etc/passwd.  Cu toate acestea, în
       cazul sistemelor recente, aceasta se referă, de asemenea,  la  baze  de  date  la  nivel  de  rețea  care
       utilizează NIS, LDAP și alte fișiere locale configurate în /etc/nsswitch.conf.

FIȘIERE

       /etc/passwd
              fișierul local al bazei de date de parole

       /etc/nsswitch.conf
              Baze de date de sistem și fișier de configurare a comutatorului serviciului de nume („Name Service
              Switch”: NSS)

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌────────────────────────────┬───────────────────┬──────────────────────────────────────────────────────┐
       │ InterfațăAtributValoare                                              │
       ├────────────────────────────┼───────────────────┼──────────────────────────────────────────────────────┤
       │ getpwnam()                 │ Siguranța firelor │ MT-Unsafe race:pwnam locale                          │
       ├────────────────────────────┼───────────────────┼──────────────────────────────────────────────────────┤
       │ getpwuid()                 │ Siguranța firelor │ MT-Unsafe race:pwuid locale                          │
       ├────────────────────────────┼───────────────────┼──────────────────────────────────────────────────────┤
       │ getpwnam_r(), getpwuid_r() │ Siguranța firelor │ MT-Safe locale                                       │
       └────────────────────────────┴───────────────────┴──────────────────────────────────────────────────────┘

VERSIUNI

       Câmpul pw_gecos nu este specificat în POSIX, dar este prezent în majoritatea implementărilor.

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001, SVr4, 4.3BSD.

NOTE

       Formularea de mai sus de la „RETURN VALUE” este din POSIX.1-2001. Aceasta nu numește „not found” o eroare
       și,  prin  urmare,  nu specifică ce valoare ar putea avea errno în această situație. Dar acest lucru face
       imposibilă recunoașterea erorilor. S-ar putea argumenta că, în conformitate cu  POSIX,  errno  ar  trebui
       lăsat  neschimbată  dacă o intrare nu este găsită. Experimentele pe diferite sisteme de tip UNIX arată că
       în această situație apar o mulțime de valori diferite: 0, ENOENT, EBADF,  ESRCH,  EWOULDBLOCK,  EPERM  și
       probabil altele.

       Câmpul pw_dir conține numele directorului de lucru inițial al utilizatorului. Programele de autentificare
       utilizează  valoarea  acestui  câmp  pentru  a  inițializa  variabila  de  mediu  HOME pentru shell-ul de
       autentificare. O aplicație care dorește să determine directorul inițial al utilizatorului său  ar  trebui
       să  inspecteze valoarea lui HOME (mai degrabă decât valoarea getpwuid(getuid())->pw_dir) deoarece aceasta
       permite utilizatorului să își modifice  noțiunea  de  „director  personal”  în  timpul  unei  sesiuni  de
       conectare.  Pentru  a  determina directorul personal (inițial) al unui alt utilizator, este necesar să se
       utilizeze getpwnam("username")->pw_dir sau ceva similar.

EXEMPLE

       Programul de mai jos demonstrează utilizarea getpwnam_r() pentru a găsi numele de utilizator  complet  și
       ID-ul de utilizator pentru numele de utilizator furnizat ca argument al liniei de comandă.

       #include <errno.h>
       #include <pwd.h>
       #include <stdint.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       int
       main(int argc, char *argv[])
       {
           struct passwd pwd;
           struct passwd *result;
           char *buf;
           long bufsize;
           int s;

           if (argc != 2) {
               fprintf(stderr, "Utilizare: %s nume-utilizator\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
           if (bufsize == -1)          /* Valoarea a fost indeterminată */
               bufsize = 16384;        /* Ar trebui să fie mai mult decât suficient */

           buf = malloc(bufsize);
           if (buf == NULL) {
               perror("malloc");
               exit(EXIT_FAILURE);
           }

           s = getpwnam_r(argv[1], &pwd, buf, bufsize, &result);
           if (result == NULL) {
               if (s == 0)
                   printf("Nu s-a găsit\n");
               else {
                   errno = s;
                   perror("getpwnam_r");
               }
               exit(EXIT_FAILURE);
           }

           printf("Nume: %s; UID: %jd\n", pwd.pw_gecos,
                  (intmax_t) pwd.pw_uid);
           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

       endpwent(3),  fgetpwent(3),  getgrnam(3),  getpw(3),  getpwent(3), getspnam(3), putpwent(3), setpwent(3),
       nsswitch.conf(5), passwd(5)

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                                      getpwnam(3)