Документация по LinuxLinuxDoc.Ru 🔍

getpass - получает пароль

НАЗВАНИЕ
getpass - получает пароль

СИНТАКСИС
#include

char *getpass( const char * prompt );

ОПИСАНИЕ
Эта фукция является устаревшей. Не надо использовать ее.

Функция getpass() открывает /dev/tty (управляющий терминал
процесса), выводит строку prompt, выключая режим показа
вводимых символов. Читает одну строку ("пароль"), затем
восстанавливает состояние терминала и закрывает /dev/tty.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция getpass возвращает указатель на статический буфер
содержащий (первые PASS_MAX байтов) пароль без символа
перевода строки, оканчивающийся NUL. Этот буфер может
быть перезаписан следующим вызовом. При ошибке, состояние
терминала восстанавливается, errno устанавливается
соответствующим образом и возвращается NULL.

ОШИБКИ

Функция может завершиться неудачно если:

ENXIO Процесс не имеет управляющего терминала.

ЗАМЕЧАНИЯ
Для libc4 и libc5, строка prompt не записывается на
устройство /dev/tty, а отправляется в поток stderr. Кроме
того, если /dev/tty не может быть открыт, то пароль
читается из потока stdin. Статический буфер имеет длину
128, т.о. возвращаются только первые 127 символов пароля.
Во время чтения пароля генерация сигналов (SIGINT,
SIGQUIT, SIGSTOP, SIGTSTOP) отключена и соответствующие
символы (обычно control-C, control-\, control-Z и control-
Y) посылаются как часть пароля. С libc 5.4.19 также
отключена возможность редактирования, т.е. символ
Backspace и подобные ему, будут рассматриваться как часть
пароля. Для glibc2, если /dev/tty не может быть открыт,
то строка prompt выводится в поток ошибок stderr, а пароль
читается из стандартного потока ввода stdin. При это нет
ограничения на длину пароля и строку можно редактировать.

В SUSv2 значение PASS_MAX должно быть определено в . В этом случае он больше, чем 8, и может быть
найден используя sysconf(_SC_PASS_MAX). Однако, из
стандарта POSIX.2 константы PASS_MAX, _SC_PASS_MAX и
функция getpass() убраны. Libc4 и libc5 никогда не
поддерживали PASS_MAX и _SC_PASS_MAX. Glibc2 допускает
_SC_PASS_MAX и возвращает BUSIZ (напр. 8192).

ФАЙЛЫ
/dev/tty

ПРЕДЫСТОРИЯ
Функция getpass появилась в Version 7 AT&T UNIX.

НАЙДЕННЫЕ ОШИБКИ
Вызывающий процесс должен как можно скорее обнулить пароль
во избежание возможности просмотра незашифрованного пароля
в адресном пространстве процесса.
Читать новости Linux в Telegram
Linux - getpass - получает пароль
Мы в соцсетях ✉