Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all
名前
rexec, rexec_af - リモートコマンドへのストリームを返す
書式
#define _BSD_SOURCE /* feature_test_macros(7) 参照 */ #include <netdb.h> int rexec(char **ahost, int inport, char *user, char *passwd, char *cmd, int *fd2p); int rexec_af(char **ahost, int inport, char *user, char *passwd, 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.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。