Manpages

名 前

rexec, rexec_af − リ モ ー ト コ マ ン ド へ の ス ト リ ー ム を 返 す

書 式

#define _BSD_SOURCE /* feature_test_macros(7) 参 照 */
#include <netdb.h>

int rexec(char **ahost, int inport, const char *user,
const char *
passwd, const char *cmd, int *fd2p);

int rexec_af(char **ahost, int inport, const char *user,
const char *
passwd, const char *cmd, int *fd2p,
sa_family_t
af);

説 明

こ の イ ン タ ー フ ェ ー ス は rcmd(3) に よ っ て 置 き 換 え ら れ た 。

rexec() 関 数 は gethostbyname(3) を 使 っ て ホ ス ト *ahost を 探 す 。 ホ ス ト が 存 在 し な い 場 合 は −1 を 返 し 、 そ れ 以 外 の 場 合 に は *ahost に そ の ホ ス ト の 標 準 的 な 名 前 を 設 定 す る 。 ユ ー ザ ー 名 と パ ス ワ ー ド の 両 方 が 指 定 さ れ た 場 合 に は 、 こ れ ら は 接 続 先 の ホ ス ト へ の 認 証 に 利 用 さ れ る 。 そ う で な い 場 合 に は 、 適 切 な 情 報 を 入 手 す る た め に 、 環 境 変 数 と 、 そ の ユ ー ザ ー の ホ ー ム デ ィ レ ク ト リ の .netrc フ ァ イ ル が 検 索 さ れ る 。 情 報 が 見 つ か ら な か っ た 時 に は 、 ユ ー ザ ー に 対 し て 情 報 を 入 力 す る プ ロ ン プ ト が 表 示 さ れ る 。 ポ ー ト inport に は 、 接 続 に 使 用 す る DARPA Internet の well−known ポ ー ト を 指 定 す る 。 getservbyname("exec", "tcp") を 呼 び 出 す と 構 造 体 へ の ポ イ ン タ ー が 返 さ れ (getservent(3) 参 照 )、 こ の 構 造 体 に は 必 要 な ポ ー ト が 入 っ て い る 。 接 続 に 使 用 さ れ る プ ロ ト コ ル に つ い て の 詳 細 は rexecd(8) に 書 か れ て い る (訳 注 : 現 在 の と こ ろ 存 在 し な い )。 接 続 に 成 功 す る と 、 イ ン タ ー ネ ッ ト ド メ イ ン の SOCK_STREAM 型 の ソ ケ ッ ト が 返 さ れ 、 そ の ソ ケ ッ ト は リ モ ー ト コ マ ン ド の 標 準 入 力 お よ び 標 準 出 力 と な る 。 fd2p が 0 以 外 の 場 合 、 制 御 プ ロ セ ス へ の 補 助 チ ャ ン ネ ル が セ ッ ト ア ッ プ さ れ 、 補 助 チ ャ ン ネ ル の デ ィ ス ク リ プ タ ー が *fd2p に 書 か れ る 。 制 御 プ ロ セ ス は コ マ ン ド か ら の 診 断 メ ッ セ ー ジ 出 力 (フ ァ イ ル デ ィ ス ク リ プ タ ー 2) を こ の チ ャ ン ネ ル で 返 す 。 ま た 、 こ の チ ャ ン ネ ル 経 由 で UNIX の シ グ ナ ル 番 号 を 示 す バ イ ト を 受 信 す る 。 受 信 し た シ グ ナ ル は コ マ ン ド が 属 す プ ロ セ ス グ ル ー プ に 転 送 さ れ る 。 診 断 情 報 に は リ モ ー ト の 認 証 失 敗 は 含 ま れ な い 。 な ぜ な ら 、 認 証 の 確 認 が 行 わ れ た 後 で 補 助 チ ャ ン ネ ル の 接 続 は セ ッ ト ア ッ プ さ れ る か ら で あ る 。 fd2p が 0 の 場 合 、 標 準 エ ラ ー (リ モ ー ト コ マ ン ド の フ ァ イ ル デ ィ ス ク リ プ タ ー 2) は 標 準 出 力 と 同 様 に 扱 わ れ 、 リ モ ー ト プ ロ セ ス に 任 意 の シ グ ナ ル を 送 る た め の 手 段 は 提 供 さ れ な い 。 但 し 、 リ モ ー ト プ ロ セ ス に 対 し て ト リ ガ ー を か け る た め に 、 帯 域 外 デ ー タ (out−of−band data) を 使 う こ と は で き る 。

rexec_af()
rexec
() 関 数 は IPv4 (AF_INET) 上 で 動 作 す る 。 こ れ に 対 し て 、 rexec_af() 関 数 は 追 加 の 引 き 数 af が あ り 、 こ の 引 き 数 で 呼 び 出 し 側 が プ ロ ト コ ル を 選 択 で き る 。 こ の 引 き 数 に は AF_INET, AF_INET6, AF_UNSPEC を 指 定 で き る (AF_UNSPEC は 実 装 側 が プ ロ ト コ ル を 選 択 す る こ と を 意 味 す る )。

バ ー ジ ョ ン

rexec_af() 関 数 は glibc バ ー ジ ョ ン 2.9 で 追 加 さ れ た 。

属 性

マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 ) 関 数 rexec() と rexec_af() は ス レ ッ ド セ ー フ で は な い 。

準 拠

こ れ ら の 関 数 は POSIX.1−2001 に は な い 。 rexec() 関 数 は 4.2BSD で 始 め て 登 場 し 、 BSD 系 、 Solaris や 他 の 多 く の シ ス テ ム に 存 在 す る 。 rexec_af() 関 数 は も っ と 新 し く 、 そ れ ほ ど 広 く 使 わ れ て い る わ け で は な い 。

バ グ

rexec() 関 数 は ネ ッ ト ワ ー ク に 暗 号 化 さ れ て い な い パ ス ワ ー ド を 送 信 す る 。 基 礎 的 な サ ー ビ ス に お い て は 大 き な セ キ ュ リ テ ィ ホ ー ル と 考 え ら れ る た め 、 多 く の サ イ ト で 無 効 に な っ て い る 。 詳 細 は rexecd(8) を 参 照 。

関 連 項 目

rcmd(3), rexecd(8)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。