Man page - getpwnam(3)

Packages contains this manual

Available languages:

en fr pl ja ru ro de

Manual

getpwnam

NUME
BIBLIOTECA
SINOPSIS
DESCRIERE
VALOAREA RETURNATĂ
ERORI-IEȘIRE
NOTĂ
FIȘIERE
ATRIBUTE
VERSIUNI
STANDARDE
ISTORIC
NOTE
EXEMPLE
CONSULTAȚI ȘI
TRADUCERE

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).

Image grohtml-659433-1.png

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 .