EN JA
REXEC(3)
REXEC(3) FreeBSD Library Functions Manual REXEC(3)

名称

rexecリモートコマンドにストリームを戻す

ライブラリ

Compatibility Library (libcompat, -lcompat)

書式

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

解説

このインタフェースは、 rcmd(3) によって旧式となりました。

rexec() 関数は、 gethostbyname(3) を使用してホスト *ahost を検索し、ホストが存在しないなら、-1 を返します。そうでなければ、 *ahost は、ホストの標準名に設定されます。ユーザ名とパスワードの両方が指定されるなら、これらは、外部ホストの認証のために使用されます。そうでなければ、環境とホームディレクトリのユーザの .netrc ファイルは、適切な情報のために検索されます。これがすべて失敗するなら、ユーザは、情報のためにプロンプトを出します。

ポート inport は、接続に使用する、既知の DARPA インターネットポートを指定します。 getservbyname( "exec", "tcp") を呼び出すと ( getservent(3) 参照)、必要なポートを含む構造体のポインタが戻されます。接続のプロトコルについては、 rexecd(8) に詳細が説明されています。

接続が成功すると、 SOCK_STREAM タイプのインターネットドメインのソケットが呼び出し側に戻され、リモートコマンドの stdinstdout として与えられます。 fd2p が 0 以外である場合は、制御プロセスの補助チャネルが設定され、その記述子が *fd2p に置かれます。制御プロセスは、このチャネルにコマンドからの診断出力 (ユニット 2) を戻し、また、 UNIX シグナル番号としてこのチャネルのバイトを受け入れ、コマンドのプロセスグループへ転送します。戻された診断情報には、認証が確認された後、第 2 の接続が設定されるので、リモート認証の失敗を含んでいません。 fd2p が 0 である場合は、 stderr (リモートコマンドのユニット 2) が stdout と同じものになり、帯域外データを使用して注目を集められますが、リモートプロセスに任意のシグナルを送信する準備は行なわれません。

関連項目

rcmd(3), rexecd(8)

歴史

rexec() 関数は、 4.2BSD で登場しました。

バグ

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

根本的なサービスは大きなセキュリティホールと考えられるため、多くのサイトでは有効になっていません。説明のために rexecd(8) を参照してください。

June 4, 1993 FreeBSD