Provided by:
manpages-pl-dev_20060617-1_all 
NAZWA
getlogin, cuserid - odczytanie nazwy użytkownika
SKŁADNIA
#include <unistd.h>
char *getlogin(void);
#include <stdio.h>
char *cuserid(char *string);
OPIS
getlogin zwraca wskaźnik do łańcucha zawierającego nazwę użytkownika
zalogowanego na terminalu sterującym procesu, lub wskaźnik NULL, jeśli
nie można tej informacji określić. Łańcuch ten jest alokowany
statycznie i może zostać nadpisany przez późniejsze wywołanie tej
funkcji lub funkcji cuserid.
cuserid zwraca wskaźnik do łańcucha zawierającego nazwę użytkownika
skojarzonego z efektywnym identyfikatorem użytkownika dla procesu.
Jeśli string nie jest wskaźnikiem NULL, powinien on być tablicą, która
może pomieścić co najmniej L_cuserid znaków; łańcuch jest zwracany w
tej tablicy. W przeciwnym przypadku, zwracany jest wskaźnik do łańcucha
w obszarze pamięci statycznej. Łańcuch ten jest alokowany statycznie i
może zostać nadpisany przez późniejsze wywołania tej funkcji lub
funkcji getlogin.
Makro L_cuserid jest stałą całkowitą określającą, jaka duża tablica
może być potrzebna do przechowania nazwy użytkownika. L_cuserid jest
zadeklarowane w stdio.h.
Funkcje te pozwalają programowi pozytywnie zidentyfikować użytkownika,
na prawach którego działa program (cuserid) lub użytkownika
zalogowanego w danej sesji (getlogin). (Mogą to być różni użytkownicy,
gdy wchodzą w grę programy setuid-owe.)
W większości zastosowań, bardziej przydatne dla określenia kim jest
użytkownik jest posługiwanie się zmienną środowiskową LOGNAME. Jest to
bardziej elastyczne, właśnie dlatego, że użytkownik może dowolnie
ustawić LOGNAME.
BŁĘDY
ENOMEM Zabrakło pamięci na przydzielenie struktury passwd.
PLIKI
/etc/passwd plik bazy danych z hasłami
/var/run/utmp (tradicyjnie /etc/utmp;
niektóre wersje libc używały /var/adm/utmp)
ZGODNE Z
POSIX.1. System V zawiera funkcję cuserid, która posługuje się raczej
rzeczywistym identyfikatorem użytkownika, niż efektywnym
identyfikatorem użytkownika. Funkcję cuserid włączono w wersji POSIX z
roku 1988, ale usunięto ją w wersji z roku 1990.
USTERKI
Na nieszczęście, raczej łatwo jest ogłupić getlogin(). Czasem nie
działa ona wcale, gdyż jakiś program namieszał w pliku utmp. Często
zwraca ona jedynie pierwszych 8 znaków nazwy logowania. Ponadto,
użytkownik aktualnie zalogowany na terminalu sterującym programu nie
musi być użytkownikiem, który ten program uruchomił. Ze względów
związanych z bezpieczeństwem, należy unikać getlogin().
Nikt dokładnie nie wie, co robi cuserid() - należy jej unikać w
przenośnych programach - należy jej w ogóle unikać i używać zamiast
niej getpwuid(geteuid()), jeśli jest to to, czego potrzeba. NIE NALEŻY
UŻYWAĆ cuserid().
ZOBACZ TAKŻE
geteuid(2), getuid(2)