- trixie-backports 4.28.0-2~bpo13+2
- testing 4.28.0-2
- unstable 4.28.0-2
| getlogin(3) | Library Functions Manual | getlogin(3) |
NUME¶
getlogin, getlogin_r, cuserid - obține numele de utilizator
BIBLIOTECA¶
Biblioteca C standard (libc, -lc)
SINOPSIS¶
#include <unistd.h>
char *getlogin(void); int getlogin_r(char buf[.bufsize], size_t bufsize);
#include <stdio.h>
char *cuserid(char *string);
getlogin_r():
_POSIX_C_SOURCE >= 199506L
cuserid():
Începând cu glibc 2.24
(_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
|| _GNU_SOURCE
Până la versiunea glibc 2.23 inclusiv:
_XOPEN_SOURCE
DESCRIERE¶
getlogin() returnează un indicator către un șir care conține numele utilizatorului conectat la terminalul de control al procesului sau un indicator nul dacă această informație nu poate fi determinată. Șirul este alocat static și poate fi suprascris la apelurile ulterioare ale acestei funcții sau ale funcției cuserid().
getlogin_r() returnează același nume de utilizator în matricea buf de dimensiune bufsize.
cuserid() returnează un indicator către un șir care conține un nume de utilizator asociat cu ID-ul efectiv al utilizatorului procesului. Dacă string nu este un indicator nul, acesta trebuie să fie o matrice care poate conține cel puțin L_cuserid caractere; șirul este returnat în această matrice. În caz contrar, este returnat un indicator către un șir dintr-o zonă statică. Acest șir este alocat static și poate fi suprascris la apelurile ulterioare ale acestei funcții sau ale funcției getlogin().
Macrocomanda L_cuserid este o constantă de număr întreg care indică lungimea matricei de care aveți nevoie pentru a stoca un nume de utilizator. L_cuserid este declarată în <stdio.h>.
Aceste funcții permit programului dvs. să identifice cu certitudine utilizatorul care rulează (cuserid()) sau utilizatorul care s-a conectat la această sesiune (getlogin()). (Acestea pot diferi atunci când sunt implicate programe set-user-ID.)
În majoritatea cazurilor, este mai util să utilizați variabila de mediu LOGNAME pentru a afla cine este utilizatorul. Aceasta este mai flexibilă tocmai pentru că utilizatorul poate defini LOGNAME în mod arbitrar.
VALOAREA RETURNATö
getlogin() returnează un indicator către numele de utilizator în cazul succesului și NULL în cazul eșecului, cu errno configurată pentru a indica eroarea. getlogin_r() returnează 0 în caz de succes și o valoare diferită de zero în caz de eșec.
ERORI-IEȘIRE¶
POSIX specifică:
- 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ă.
- ENXIO
- Procesul apelant nu are terminal de control.
- ERANGE
- (getlogin_r) Lungimea numelui de utilizator, inclusiv octetul nul de terminare ('\0'), este mai mare decât bufsize.
Linux/glibc are, de asemenea:
FIȘIERE¶
- /etc/passwd
- fișier de bază de date de parole
- /var/run/utmp
- (în mod tradițional /etc/utmp; unele versiuni libc utilizau /var/adm/utmp)
ATRIBUTE¶
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
| Interfață | Atribut | Valoare |
| getlogin() | Siguranța firelor | MT-Unsafe race:getlogin race:utent sig:ALRM timer locale |
| getlogin_r() | Siguranța firelor | MT-Unsafe race:utent sig:ALRM timer locale |
| cuserid() | Siguranța firelor | MT-Unsafe race:cuserid/!string locale |
În tabelul de mai sus, utent din race:utent înseamnă că, dacă oricare dintre funcțiile setutent(3), getutent(3) sau endutent(3) sunt utilizate în paralel în diferite fire ale unui program, pot apărea conflicte de date. getlogin() și getlogin_r() apelează aceste funcții, așa că folosim race:utent pentru a reaminti utilizatorilor.
VERSIUNI¶
OpenBSD are getlogin() și setlogin(), precum și un nume de utilizator asociat unei sesiuni, chiar dacă 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 în POSIX.1-1990. SUSv2. Eliminat în POSIX.1-2001.
- System V are o funcție cuserid() care utilizează ID-ul real al utilizatorului în locul ID-ului efectiv al utilizatorului.
ERORI¶
Din păcate, este destul de ușor să păcălești getlogin(). Uneori nu funcționează deloc, deoarece unele programe au stricat fișierul utmp. Adesea, afișează doar primele 8 caractere ale numelui de utilizator. Utilizatorul conectat în prezent la terminalul de control al programului nostru nu trebuie să fie neapărat utilizatorul care l-a pornit. Evită getlogin() din motive de securitate.
Rețineți că glibc nu respectă specificația POSIX și utilizează stdin în loc de /dev/tty. O eroare. (Alte sisteme recente, precum SunOS 5.8, HP-UX 11.11 și FreeBSD 4.8, returnează numele de conectare și atunci când stdin este redirecționat.)
Nimeni nu știe cu exactitate ce face cuserid(); evitați-l în programele portabile. Sau evitați-l cu totul: folosiți în schimb getpwuid(geteuid()), dacă asta ați vrut să spuneți. Nu folosiți cuserid().
CONSULTAȚI ȘI¶
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.
| 15 iunie 2024 | Pagini de manual de Linux 6.9.1 |