getlogin(3) Library Functions Manual getlogin(3) NUME getlogin, getlogin_r, cuserid - obine numele de utilizator BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include char *getlogin(void); int getlogin_r(size_t bufsize; char buf[bufsize], size_t bufsize); #include char *cuserid(char *string); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): getlogin_r(): _POSIX_C_SOURCE >= 199506L cuserid(): Incepand cu glibc 2.24 (_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L) || _GNU_SOURCE Pana la versiunea glibc 2.23 inclusiv: _XOPEN_SOURCE DESCRIERE getlogin() returneaza un indicator catre un ir care conine numele utilizatorului conectat la terminalul de control al procesului sau un indicator nul daca aceasta informaie nu poate fi determinata. irul este alocat static i poate fi suprascris la apelurile ulterioare ale acestei funcii sau ale funciei cuserid(). getlogin_r() returneaza acelai nume de utilizator in matricea buf de dimensiune bufsize. cuserid() returneaza un indicator catre un ir care conine un nume de utilizator asociat cu ID-ul efectiv al utilizatorului procesului. Daca string nu este un indicator nul, acesta trebuie sa fie o matrice care poate conine cel puin L_cuserid caractere; irul este returnat in aceasta matrice. In caz contrar, este returnat un indicator catre un ir dintr-o zona statica. Acest ir este alocat static i poate fi suprascris la apelurile ulterioare ale acestei funcii sau ale funciei getlogin(). Macrocomanda L_cuserid este o constanta de numar intreg care indica lungimea matricei de care avei nevoie pentru a stoca un nume de utilizator. L_cuserid este declarata in . Aceste funcii permit programului dvs. sa identifice cu certitudine utilizatorul care ruleaza (cuserid()) sau utilizatorul care s-a conectat la aceasta sesiune (getlogin()). (Acestea pot diferi atunci cand sunt implicate programe set-user-ID.) In majoritatea cazurilor, este mai util sa utilizai variabila de mediu LOGNAME pentru a afla cine este utilizatorul. Aceasta este mai flexibila tocmai pentru ca utilizatorul poate defini LOGNAME in mod arbitrar. VALOAREA RETURNATA getlogin() returneaza un indicator catre numele de utilizator in cazul succesului i NULL in cazul eecului, cu errno configurata pentru a indica eroarea. getlogin_r() returneaza 0 in caz de succes i o valoare diferita de zero in caz de eec. ERORI-IEIRE POSIX specifica: EMFILE Limita per proces a numarului de descriptori de fiiere deschise a fost atinsa. ENFILE Limita la nivel de sistem a numarului total de fiiere deschise a fost atinsa. ENXIO Procesul apelant nu are terminal de control. ERANGE (getlogin_r) Lungimea numelui de utilizator, inclusiv octetul nul de terminare ('\0'), este mai mare decat bufsize. Linux/glibc are, de asemenea: ENOENT Nu exista nicio intrare corespunzatoare in fiierul utmp. ENOMEM Insufficient memory to allocate passwd structure. ENOTTY Intrarea standard nu se refera la un terminal. A se vedea seciunea <>. FIIERE /etc/passwd fiier de baza de date de parole /var/run/utmp (in mod tradiional /etc/utmp; unele versiuni libc utilizau /var/adm/utmp) ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +-------------+---------------------+----------------------------------+ |Interfaa | Atribut | Valoare | +-------------+---------------------+----------------------------------+ |getlogin() | Sigurana firelor | MT-Unsafe race:getlogin | | | | race:utent sig:ALRM timer locale | +-------------+---------------------+----------------------------------+ |getlogin_r() | Sigurana firelor | MT-Unsafe race:utent sig:ALRM | | | | timer locale | +-------------+---------------------+----------------------------------+ |cuserid() | Sigurana firelor | MT-Unsafe race:cuserid/!string | | | | locale | +-------------+---------------------+----------------------------------+ In tabelul de mai sus, utent din race:utent inseamna ca, daca oricare dintre funciile setutent(3), getutent(3) sau endutent(3) sunt utilizate in paralel in diferite fire ale unui program, pot aparea conflicte de date. getlogin() i getlogin_r() apeleaza aceste funcii, aa ca folosim race:utent pentru a reaminti utilizatorilor. VERSIUNI OpenBSD are getlogin() i setlogin(), precum i un nume de utilizator asociat unei sesiuni, chiar daca aceasta nu are un terminal de control. STANDARDE getlogin() getlogin_r() POSIX.1-2008. cuserid() Niciunul. STANDARDE getlogin() getlogin_r(): POSIX.1-2001. OpenBSD. cuserid() System V, POSIX.1-1988. Eliminat in POSIX.1-1990. SUSv2. Eliminat in POSIX.1-2001. System V are o funcie cuserid() care utilizeaza ID-ul real al utilizatorului in locul ID-ului efectiv al utilizatorului. ERORI Din pacate, este destul de uor sa pacaleti getlogin(). Uneori nu funcioneaza deloc, deoarece unele programe au stricat fiierul utmp. Adesea, afieaza doar primele 8 caractere ale numelui de utilizator. Utilizatorul conectat in prezent la terminalul de control al programului nostru nu trebuie sa fie neaparat utilizatorul care l-a pornit. Evita getlogin() din motive de securitate. Reinei ca glibc nu respecta specificaia POSIX i utilizeaza stdin in loc de /dev/tty. O eroare. (Alte sisteme recente, precum SunOS 5.8, HP-UX 11.11 i FreeBSD 4.8, returneaza numele de conectare i atunci cand stdin este redirecionat.) Nimeni nu tie cu exactitate ce face cuserid(); evitai-l in programele portabile. Sau evitai-l cu totul: folosii in schimb getpwuid(geteuid()), daca asta ai vrut sa spunei. Nu folosii cuserid(). CONSULTAI I logname(1), geteuid(2), getuid(2), utmp(5) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 28 iunie 2025 getlogin(3)