REXECD(8)

名称
rexecd - リモートプロセスデーモン

書式
rexecd

解説
rexecd は、 rexec(3) ルーチンのためのサーバです。本サーバは、ユーザ名と パスワードに基づいたユーザ認証を備えたリモートプロセス実行環境を提供します。

rexecd は、``exec'' サービスの仕様で示されているポートでサービス要求を監視します。 これについては services(5) を参照して下さい。 サービス要求を受信すると、以下のプロトコルが開始されます。

1.  サーバは、ソケットから NUL (‘\0’) を受信するまで文字を読みとります。得られた文字列は、10 進数の ASCII 文字列として解釈されます。

2.  ステップ 1 で受信した数が 0 でない場合、その数は stderr のために用いられる 2 本目のストリームのポート番号とみなされます。 それから、2 本目の接続がクライアントマシン上の指定されたポートとの間に 生成されます。

3.  NUL で終了する最大 16 文字のユーザ名が最初のソケットより取得されます。

4.  NUL で終了する、暗号化が施されていない、最大 16 文字のパスワードが 最初の socket より取得されます。

5.  NUL で終了するシェルに渡されるコマンドが、最初の socket より取得されます。 コマンドの長さは、システムの引数リストの制限を越えない長さに制限されます。

6.  rexecd はログイン時に行われるのと同等なユーザ認証を行い、 これに成功すると、当該ユーザのホームディレクトリに chdir し、 そのユーザのユーザ名とグループ名による保護を確立します。 これらの段階のいずれかが失敗した場合には、コネクションを切断し、 診断メッセージを表示します。

7.  NUL 文字が最初のソケットに返却され、コマンドラインは当該ユーザの 通常のログインシェルに渡されます。シェルは rexecd によって確立されたネットワークコネクションを継承します。

診断
以下のリストの一番最後のものを除き、全ての診断メッセージは、 他のネットワークコネクションが切断された後に、最初の socket を経由して返却 されます。エラーは、値 1 を持つ 1 バイトのデータが先頭につくことでわかります (0 は、コマンドの実行より前の上記の 7 つのステップがすべて正常終了した場合に 返却されます)。

username too long
    ユーザ名が 16 文字を越えています。

password too long
    パスワードが 16 文字を越えています。

command too long
    コマンドラインの長さがシステムの引数の長さ制限を越えています。

Login incorrect.
    当該ユーザ名のパスワードエントリがありません。

Password incorrect.
    パスワードが不正です。

remote directory.
    ホームディレクトリへの chdir(2) が失敗しました。

Try again.
    サーバの fork(2) が失敗しました。

<shellname>: ...
    ユーザのログインシェルが起動できませんでした。このメッセージは stderr 用に確立されたコネクションを用いて送信され、 先頭の 1 バイトのフラグはつきません。

関連項目
rexec(3)

バグ
``Password incorrect'' ではなく、``Login incorrect'' を表示するのは、 パスワードのないユーザを検出できる可能性があることを意味しています。 これはセキュリティホールです。

すべてのデータとパスワードを交換する場合に、それらの暗号化を行う機構が必要 です。

歴史
rexecd コマンドは 4.2BSD から登場しました。

セキュリティに関する考察
クライアントと rexecd の間で交わされるパスワードは暗号化されないので、 このサービスを有効にしないことを 強く すすめます。