getpass(3)

запрашивает пароль · man3 · Русский

getpass(3) Library Functions Manual getpass(3)

getpass - запрашивает пароль

Standard C library (libc, -lc)

#include <unistd.h>
[[deprecated]] char *getpass(const char *prompt);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

getpass():

Since glibc 2.2.2:
        _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
            || /* glibc >= 2.19: */ _DEFAULT_SOURCE
            || /* glibc <= 2.19: */ _BSD_SOURCE
    Before glibc 2.2.2:
        none

This function is obsolete. Do not use it. See NOTES. If you want to read input without terminal echoing enabled, see the description of the ECHO flag in termios(3).

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

The function getpass() returns a pointer to a static buffer containing (the first PASS_MAX bytes of) the password without the trailing newline, terminated by a null byte ('\0'). This buffer may be overwritten by a following call. On error, the terminal state is restored, errno is set to indicate the error, and NULL is returned.

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

/dev/tty

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
getpass() Безвредность в нитях MT-Unsafe term

Есть в SUSv2, но помечена как УСТАРЕВШАЯ. Удалена из POSIX.1-2001.

You should use instead readpassphrase(3bsd), provided by libbsd.

В реализации библиотеки GNU C, если файл /dev/tty не может быть открыт, то строка приглашения выводится в поток ошибок stderr, а пароль читается из стандартного потока ввода stdin. Ограничения на длину пароля нет и строку можно редактировать.

Согласно SUSv2 значение PASS_MAX должно быть определено в <limits.h>, если оно меньше 8, и в любом случае может быть получено с помощью sysconf(_SC_PASS_MAX). Однако, из стандарта POSIX.2 константы PASS_MAX, _SC_PASS_MAX и функция getpass() убраны. В glibc учитывается _SC_PASS_MAX и возвращается BUFSIZ (например, 8192).

Вызывающий процесс должен как можно скорее обнулить пароль во избежание возможности просмотра незашифрованного пароля в адресном пространстве процесса.

crypt(3)

Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

5 февраля 2023 г. Linux man-pages 6.03