REXEC

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index JM Home Page
 

名前

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

書式

#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);

rexec(), rexec_af():

    Since glibc 2.19:
        _DEFAULT_SOURCE
    In glibc up to and including 2.19:
        _BSD_SOURCE
 

説明

このインターフェースは 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 で追加された。  

属性

この節で使用されている用語の説明は attributes(7) を参照のこと。
Interface Attribute Value
rexec(), rexec_af() Thread safety MT-Unsafe
 

準拠

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

バグ

rexec() 関数はネットワークに暗号化されていないパスワードを送信する。

基礎的なサービスにおいては大きなセキュリティホールと考えられるため、 多くのサイトで無効になっている。詳細は rexecd(8) を参照。  

関連項目

rcmd(3), rexecd(8)  

この文書について

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

関連キーワード

リモート   接続   チャンネル   rexec   ホスト   認証   ポート   プロトコル   補助   シグナル   ahost   パスワード   構造体   詳細   ソケット   制御   セットアップ   診断   受信   選択   ストリーム   netdb   family   Since   including

Linux マニュアル 一覧

関連するコマンド・関数

rexec_af.3   rexec.1   iruserok.3   iruserok_af.3   rcmd.3   rcmd_af.3
 

Index

名前
書式
説明
rexec_af()
バージョン
属性
準拠
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:23 GMT, October 11, 2026