pw_auth(3)

НАЗВАНИЕ
pw_auth - выполняет процедуры проверки пароля, заданные администратором

СИНТАКСИС

#include <pwauth.h>

int pw_auth (char*command,char*user,intreason,char*input);

ОПИСАНИЕ

pw_auth вызывает функции определённые администратором для заданного пользователя.

command задаёт название программы аутентификации. Она выбирает информацию из файла паролей пользователей. В строке содержится один или более имён исполняемых программ, разделённых точкой с запятой. Запускается каждая программа в порядке перечисления. Параметры командной строки, задаваемые для каждого основания (reason), описаны далее.

user задаётся имя пользователя, такое же как в файле /etc/passwd , для которого нужно произвести аутентификацию. Пользовательские записи упорядочены по именам пользователей. Это позволяет использовать не уникальные ID пользователей и для каждой пары имя - ID указать свою программу аутентификации и другую информацию.

Каждое из разрешённых оснований аутентификации может обрабатываться разными способами. Если не упомянуто другое, для связи с пользователем используются стандартные файловые дескрипторы 0, 1 и 2. Для определения подлинности пользователя, делающего запрос аутентификации, может быть использован реальный ID пользователя. В параметре reason можно указать следующее:

PW_SU
    Выполнить аутентификацию текущего реального ID пользователя, пытающегося получить права реального ID указанного пользователя. Программа аутентификации будет вызвана с параметром -s , за которым следует имя пользователя.

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

PW_ADD
    Создать новую запись для указанного пользователя. Это позволяет программе аутентификации инициализировать место для нового пользователя. Программа аутентификации будет вызвана с параметром -a , за которым следует имя пользователя.

PW_CHANGE
    Изменить существующую запись для указанного пользователя. Это позволяет программе аутентификации изменить информацию об аутентификации существующего пользователя. Программа аутентификации будет вызвана с параметром -c , за которым следует имя пользователя.

PW_DELETE
    Удалить информацию об аутентификации указанного пользователя. Это позволяет программе аутентификации освободить место, занимаемое пользователем, который больше не будет аутентифицироваться с помощью программы аутентификации. Программа аутентификации будет вызвана с параметром -d , за которым следует имя пользователя.

PW_TELNET
    Аутентифицировать пользователя пытающегося подключиться к системе с помощью команды telnet. Программа аутентификации будет вызвана с параметром -t , за которым следует имя пользователя.

PW_RLOGIN
    Аутентифицировать пользователя пытающегося подключиться к системе с помощью команды rlogin. Программа аутентификации будет вызвана с параметром -r , за которым следует имя пользователя.

PW_FTP
    Аутентифицировать пользователя пытающегося подключиться к системе с помощью команды ftp. Программа аутентификации будет вызвана с параметром -f , за которым следует имя пользователя. Стандартные файловые дескрипторы недоступны для связи с пользователем. Стандартный файловый дескриптор ввода будет подсоединён к родительскому процессу, а другие два файловых дескриптора вывода будут подключены к устройству /dev/null. pw_auth передаст по каналу единственную строку данных программе аутентификации через файловый дескриптор 0.

PW_REXEC
    Аутентифицировать пользователя пытающегося подключиться к системе с помощью команды rexec. Программа аутентификации будет вызвана с параметром -x , за которым следует имя пользователя. Стандартные файловые дескрипторы недоступны для связи с пользователем. Стандартный файловый дескриптор ввода будет подсоединён к родительскому процессу, а другие два файловых дескриптора вывода будут подключены к устройству /dev/null. pw_auth передаст по каналу единственную строку данных программе аутентификации через файловый дескриптор 0.

Последний параметр данных аутентификации используется только в случае оснований PW_FTP и PW_REXEC. Он воспринимается как одиночная текстовая строка, которая передаётся по каналу программе аутентификации. Если в качестве основания указано PW_CHANGE, то значение параметра input равно значению предыдущего имени пользователя, если имя пользователя будет изменяться.

ПРЕДОСТЕРЕЖЕНИЯ

Данная функция не создаёт реальных сеансов. Она только определяет, разрешено ли создание сессии для указанного пользователя.

Сетевые параметры не были протестированы.

ДИАГНОСТИКА

pw_auth возвращает 0, если программа аутентификации завершила работу с кодом 0, и ненулевое значение в противном случае.

СМОТРИТЕ ТАКЖЕ

login(1), passwd(1), su(1), useradd(8), userdel(8), usermod(8).