NAZWA¶
getlogin, cuserid - odczytanie nazwy użytkownika
SKŁADNIA¶
#include <unistd.h>
char *getlogin(void);
#include <stdio.h>
char *cuserid(char *string);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 3 getlogin
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.