.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's "POSIX Programmer's Guide" (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" .\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) .\" Modified 1996-05-27 by Martin Schulze (joey@linux.de) .\" Modified 2003-11-15 by aeb .\" 2008-11-07, mtk, Added an example program for getpwnam_r(). .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getpwnam 3 "15 iunie 2024" "Pagini de manual de Linux 6.9.1" .SH NUME getpwnam, getpwnam_r, getpwuid, getpwuid_r \- obține intrarea din fișierul de parole .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP \fB#include \fP .P \fBstruct passwd *getpwnam(const char *\fP\fIname\fP\fB);\fP \fBstruct passwd *getpwuid(uid_t \fP\fIuid\fP\fB);\fP .P \fBint getpwnam_r(const char *restrict \fP\fIname\fP\fB, struct passwd *restrict \fP\fIpwd\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct passwd **restrict \fP\fIresult\fP\fB);\fP \fBint getpwuid_r(uid_t \fP\fIuid\fP\fB, struct passwd *restrict \fP\fIpwd\fP\fB,\fP \fB char \fP\fIbuf\fP\fB[restrict .\fP\fIbuflen\fP\fB], size_t \fP\fIbuflen\fP\fB,\fP \fB struct passwd **restrict \fP\fIresult\fP\fB);\fP .fi .P .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .P \fBgetpwnam_r\fP(), \fBgetpwuid_r\fP(): .nf _POSIX_C_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH DESCRIERE Funcția \fBgetpwnam\fP() 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 \fI/etc/passwd\fP, NIS și LDAP) care corespunde numelui de utilizator \fIname\fP. .P Funcția \fBgetpwuid\fP() 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 \fIuid\fP. .P Structura \fIpasswd\fP este definită în \fI\fP după cum urmează: .P .in +4n .EX 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 */ }; .EE .in .P Consultați \fBpasswd\fP(5) pentru mai multe informații despre aceste câmpuri. .P Funcțiile \fBgetpwnam_r\fP() și \fBgetpwuid_r\fP() obțin aceleași informații ca \fBgetpwnam\fP() și \fBgetpwuid\fP(), dar stochează structura \fIpasswd\fP recuperată în spațiul indicat de \fIpwd\fP. Câmpurile de șir de caractere indicate de membrii structurii \fIpasswd\fP sunt stocate în memoria tampon \fIbuf\fP de dimensiune \fIbuflen\fP. 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 \fI*result\fP. .P Apelarea .P .in +4n .EX sysconf(_SC_GETPW_R_SIZE_MAX) .EE .in .P returnează fie \-1, fără a modifica \fIerrno\fP, fie o dimensiune inițială sugerată pentru \fIbuf\fP; (dacă această dimensiune este prea mică, apelul eșuează cu \fBERANGE\fP, caz în care apelantul poate încerca din nou cu o memorie tampon mai mare). .SH "VALOAREA RETURNATĂ" Funcțiile \fBgetpwnam\fP() și \fBgetpwuid\fP() returnează un indicator către o structură \fIpasswd\fP sau NULL dacă intrarea corespunzătoare nu este găsită sau dacă apare o eroare. Dacă apare o eroare, \fIerrno\fP este configurată pentru a indica eroarea. Dacă se dorește verificarea \fIerrno\fP după apel, aceasta trebuie să fie stabilită la zero înainte de apel. .P Valoarea returnată poate indica o zonă statică și poate fi suprascrisă prin apeluri ulterioare la \fBgetpwent\fP(3), \fBgetpwnam\fP() sau \fBgetpwuid\fP(). (Nu pasați indicatorul returnat la \fBfree\fP(3).) .P În caz de succes, funcțiile \fBgetpwnam_r\fP() și \fBgetpwuid_r\fP() returnează zero și stabilesc \fI*result\fP la \fIpwd\fP. Dacă nu a fost găsită nicio înregistrare de parolă corespunzătoare, aceste funcții returnează 0 și stochează NULL în \fI*result\fP. În caz de eroare, se returnează un număr de eroare, iar NULL este stocat în \fI*rezultat\fP. .SH ERORI\-IEȘIRE .TP \fB0\fP sau \fBENOENT\fP sau \fBESRCH\fP sau \fBEBADF\fP sau \fBEPERM\fP sau \fBEPERM\fP sau ... Datele \fIname\fP sau \fIuid\fP specificate nu au fost găsite. .TP \fBEINTR\fP A fost captat un semnal; a se vedea \fBsignal\fP(7). .TP \fBEIO\fP Eroare de In/Ieș. .TP \fBEMFILE\fP Limita per proces a numărului de descriptori de fișiere deschise a fost atinsă. .TP \fBENFILE\fP Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă. .TP \fBENOMEM\fP .\" not in POSIX .\" This structure is static, allocated 0 or 1 times. No memory leak. (libc45) Memorie insuficientă pentru alocarea structurii \fIpasswd\fP. .TP \fBERANGE\fP Spațiul de memorie tampon furnizat este insuficient. .SH FIȘIERE .TP \fI/etc/passwd\fP fișierul local al bazei de date de parole .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lb lb lbx l l l. Interfață Atribut Valoare T{ .na .nh \fBgetpwnam\fP() T} Siguranța firelor T{ .na .nh MT\-Unsafe race:pwnam locale T} T{ .na .nh \fBgetpwuid\fP() T} Siguranța firelor T{ .na .nh MT\-Unsafe race:pwuid locale T} T{ .na .nh \fBgetpwnam_r\fP(), \fBgetpwuid_r\fP() T} Siguranța firelor T{ .na .nh MT\-Safe locale T} .TE .SH VERSIUNI Câmpul \fIpw_gecos\fP nu este specificat în POSIX, dar este prezent în majoritatea implementărilor. .SH STANDARDE POSIX.1\-2008. .SH ISTORIC POSIX.1\-2001, SVr4, 4.3BSD. .SH NOTE .\" more precisely: .\" AIX 5.1 - gives ESRCH .\" OSF1 4.0g - gives EWOULDBLOCK .\" libc, glibc up to glibc 2.6, Irix 6.5 - give ENOENT .\" since glibc 2.7 - give 0 .\" FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM .\" SunOS 5.8 - gives EBADF .\" Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0 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 \fIerrno\fP în această situație. Dar acest lucru face imposibilă recunoașterea erorilor. S\-ar putea argumenta că, în conformitate cu POSIX, \fIerrno\fP 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. .P Câmpul \fIpw_dir\fP 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 \fBHOME\fP 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 \fBHOME\fP (mai degrabă decât valoarea \fIgetpwuid(getuid())\->pw_dir\fP) 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 \fIgetpwnam("username")\->pw_dir\fP sau ceva similar. .SH EXEMPLE Programul de mai jos demonstrează utilizarea \fBgetpwnam_r\fP() pentru a găsi numele de utilizator complet și ID\-ul de utilizator pentru numele de utilizator furnizat ca argument al liniei de comandă. .P .\" SRC BEGIN (getpwnam.c) .EX #include #include #include #include #include #include \& 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\[rs]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\[rs]n"); else { errno = s; perror("getpwnam_r"); } exit(EXIT_FAILURE); } \& printf("Nume: %s; UID: %jd\[rs]n", pwd.pw_gecos, (intmax_t) pwd.pw_uid); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBendpwent\fP(3), \fBfgetpwent\fP(3), \fBgetgrnam\fP(3), \fBgetpw\fP(3), \fBgetpwent\fP(3), \fBgetspnam\fP(3), \fBputpwent\fP(3), \fBsetpwent\fP(3), \fBpasswd\fP(5) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .