iruserok(), iruserok_sa()

Проверить личность удаленного хоста

Прототип:

#include <unistd.h>
int iruserok( uint32_t raddr,
int superuser,
char *ruser,
char *luser );
int iruserok_sa( const void *raddr,
int superuser,
int rlen,
char *ruser,
char *luser );

Аргументы:

raddr
IP адрес удаленного узла. Для iruserok_sa(), этот аргумент имеет тип void * для избежания зависимостей между <unistd.h> и <sys/socket.h>.
rlen
(только для iruserok_sa()) Длина IP адреса, на который указывает raddr.
superuser
Ненулевое значение, если локальный пользователь является суперпользователем, в противном случае - ноль.
ruser
Имя удаленного пользователя.
luser
Имя локального пользователя.

Библиотека:

libsocket

Описание:

Процедура iruserok() проверяет идентичность удаленного хоста. Она используется серверами для аутентификации клиентов, запрашивающих обслуживание с помощью rcmd().

Функции rcmd(), rresvport(), и ruserok() используют rshd сервер (см. Справочник по Утилитам), среди прочего.

Функция iruserok() принимает IP-адрес удаленного хоста, два имени пользователя и флаг, указывающий, совпадает ли имя локального пользователя с именем суперпользователя. Затем, если пользователь не является суперпользователем, проверяется файл /etc/hosts.equiv (описан в Справочнике по Утилитам).

Если такой поиск не выполнен или завершился неудачно, проверяется файл .rhosts в домашнем каталоге локального пользователя, чтобы узнать, разрешен ли запрос на обслуживание. Если этот файл принадлежит кому-либо, кроме пользователя или суперпользователя, или если он доступен для записи кем-либо, кроме владельца, проверка автоматически не выполняется.

Функция iruserok() может обрабатывать только адреса IPv4; iruserok_sa() и ruserok() могут обрабатывать и другие семейства адресов.

Возвращаемое значение:

0
Имя компьютера указано в файле /etc/hosts.equiv, или хост и имя удаленного пользователя были найдены в файле .rhosts.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EAGAIN
Этот код ошибки перегружен и означает «Все сетевые порты используются».

Классификация:

Unix

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Нет

Тематические ссылки:

gethostbyaddr(), gethostname(), rcmd(), rresvport(), ruserok()




Предыдущий раздел: Описание API сетевой библиотеки