rexec, rexec_af -
возвращает
поток
удалённой
команде
Standard C library (
libc,
-lc)
#include <netdb.h>
[[deprecated]]
int rexec(char **restrict ahost, int inport,
const char *restrict user, const char *restrict passwd,
const char *restrict cmd, int *restrict fd2p);
[[deprecated]]
int rexec_af(char **restrict ahost, int inport,
const char *restrict user, const char *restrict passwd,
const char *restrict cmd, int *restrict fd2p,
sa_family_t af);
rexec(),
rexec_af():
начиная с glibc 2.19:
_DEFAULT_SOURCE
в glibc до версии 2.19 включительно:
_BSD_SOURCE
Этот
интерфейс
устарел,
используйте
rcmd(3).
Функция
rexec()
ищет узел
*ahost,
используя
gethostbyname(3), и
возвращает
-1, если узел
не
существует.
В
противном
случае,
*ahost
присваивается
стандартное
имя узла.
Если
указаны
имя
пользователя
и пароль, то
они
используются
для
аутентификации
на другом
узле; иначе
происходит
поиск
соответствующей
информации
в
окружении
и затем в
файле
.netrc,
находящемся
в домашнем
каталоге
пользователя.
Если всё
это
заканчивается
с ошибкой,
пользователь
извещается
об этом.
В
inport
указывается,
какой
хорошо
известный
(well-known) порт DARPA Internet
нужно
использовать
для
подключения;
вызов
getservbyname("exec",
"tcp")
(смотрите
getservent(3)) вернёт
указатель
на
структуру,
которая
содержит
необходимый
порт.
Протокол
подключения
подробно
описан в
rexecd(8).
Если
соединение
успешно
установлено,
то
вызывающему
возвращается
сокет в
Интернет-домене
типа
SOCK_STREAM,
который
для
удалённой
команды
считается
stdin и
stdout. Если
fd2p не равно
нулю, то
устанавливается
вспомогательный
канал до
управляющего
процесса, а
его
файловый
дескриптор
будет
помещён в
*fd2p.
Управляющий
процесс
возвращает
диагностический
вывод из
команды
(устройства
2) в этот
канал, а
также
принимает
байты из
этого
канала,
считая их
номерами
сигналов UNIX,
для их
пересылки
группе
процессов
команды.
Возвращаемая
диагностическая
информация
не
содержит
ошибки
удалённой
авторизации,
так как
второе
подключение
устанавливается
после
прохождения
авторизации.
Если
fd2p
равно 0, то
stderr
(устройство
2 удалённой
команды)
будет
работать
аналогично
stdout и для
отправки
произвольных
сигналов в
удалённый
процесс
ничего не
будет
сделано,
хотя вы
сможете
привлечь к
себе
внимание,
используя
внеполосную
передачу
данных.
Функция
rexec()
работает
по
протоколу IPv4
(
AF_INET). В
отличие от
неё,
rexec_af()
предоставляет
ещё один
аргумент,
af,
который
позволяет
вызывающему
выбрать
протокол. В
этом
аргументе
можно
указать
значения
AF_INET,
AF_INET6 или
AF_UNSPEC
(чтобы
позволить
реализации
выбирать
протокол).
The
rexec_af() function was added in glibc 2.2.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
rexec(), rexec_af() |
Безвредность
в нитях |
MT-Unsafe |
Данные
функции
отсутствуют
в POSIX.1. Функция
rexec() впервые
появилась
в 4.2BSD, и есть в
разных BSD, Solaris и
других
системах.
Функция
rexec_af()
более
новая и
распространена
гораздо
меньше.
Функция
rexec()
посылает
пароль
через сеть
в
нешифрованном
виде.
Считается,
что
лежащая в
основе
служба
является
большой
дырой в
безопасности,
и поэтому
не
включена
на
большинстве
сайтов;
смотрите
объяснение
в
rexecd(8).
rcmd(3),
rexecd(8)
Русский
перевод
этой
страницы
руководства
был сделан
aereiae <
[email protected]>, Azamat Hackimov
<
[email protected]>, Dmitriy S. Seregin <
[email protected]>,
Katrin Kutepova <
[email protected]>, Lockal
<
[email protected]>, Yuri Kozlov <
[email protected]>,
Баринов
Владимир и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]