Scroll to navigation

GETPASS(3) Podręcznik programisty Linuksa GETPASS(3)

NAZWA

getpass - wczytanie hasła

SKŁADNIA

#include <unistd.h>

char *getpass( const char * prompt );

OPIS

Funkcja ta jest przestarzała. Nie należy jej używać.

Funkcja getpass() otwiera /dev/tty (terminal sterujący procesu), wyprowadza napis prompt, wyłącza echo, odczytuje jedną linię ("hasło"), odtwarza stan terminala i zamyka /dev/tty.

WARTOŚĆ ZWRACANA

Funkcja getpass zwraca wskaźnik do statycznego bufora zawierającego hasło (pierwsze PASS_MAX bajtów) bez kończącego znaku nowej linii, zakończone znakiem NUL. Bufor ten może zostać nadpisany przez późniejsze wywołania funkcji. W przypadku błędu, odtwarzany jest stan terminala, odpowiednio ustawiane errno, i zwracane NULL.

BŁĘDY

Funkcja może zakończyć się niepomyślnie, gdy

Proces nie posiada terminala sterującego.

UWAGI

Dla libc4 i libc5 tekst zachęty ("prompt") nie jest wypisywany na /dev/tty, ale na stderr. Ponadto, jeśli nie można otworzyć /dev/tty, to hasło jest odczytywane z stdin. Bufor statyczny ma długość 128, więc zwracanych jest tylko pierwszych 127 bajtów hasła. Podczas odczytywania hasła wyłączone jest generowanie sygnałów (SIGINT, SIGQUIT, SIGSTOP, SIGTSTOP), a odpowiadające im znaki (zwykle control-C, control-\, control-Z i control-Y) są przesyłane jako część hasła. Począwszy od libc 5.4.19, wyłączona jest edycja linii, tak więc również cofanie (backspace) i jemu podobne będą widziane jako część hasła.

Dla glibc2, jeśli nie można otworzyć /dev/tty, to tekst zachęty jest wypisywany na stderr, a hasło jest odczytywane z stdin. Nie ma natomiast ograniczenia na długość hasła. Wyłączona jest edycja linii.

Zgodnie z SUSv2, jeśli wartość PASS_MAX jest mniejsza niż 8, to musi być zdefiniowana w <limits.h>, a w każdym przypadku można ją otrzymać za pomocą sysconf(_SC_PASS_MAX). Jednakże, POSIX.2 odchodzi od stałych PASS_MAX i _SC_PASS_MAX oraz od funkcji getpass (). Libc4 i libc5 nigdy nie wspierały PASS_MAX ani _SC_PASS_MAX. Glibc2 akceptuje _SC_PASS_MAX i zwraca BUFSIZ (np. 8192).

PLIKI

/dev/tty

ZOBACZ TAKŻE

crypt(3)

HISTORIA

Funkcja getpass pojawiła się w Wersji 7 AT&T UNIX.

USTERKI

Proces wywołujący funkcję powinien wyzerować hasło natychmiast, gdy tylko będzie to możliwe, aby uniknąć pozostawania jawnego hasła widocznym w przestrzeni adresowej procesu.

2000-12-05 Linux