getlogin

Autres langues

Langue: pl

Autres versions - même langue

Version: 1995-09-03 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

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)