GETLOGIN(3) | Podręcznik programisty Linuksa | GETLOGIN(3) |
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¶
1995-09-03 | Linux 1.2.13 |