REXECD(8)

名称
rexecd - リモート実行サーバ

書式
rexecd [-i]

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

rexecd は、 services(5) にて ``exec'' サービスが定義されたポートを 監視します。サービス要求を受信した際に、以下のプロトコルが 実行されます。

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

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

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

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

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

6.  rexecd は、次に、ログイン時と同様にユーザの認証を行い、 ユーザ認証が成功した場合、 カレントディレクトリを当該ユーザのホームディレクトリに変更し、 ユーザとグループの保護を行ないます。仮にこれらの段階が失敗した場合、 コネクションを切断し、診断メッセージを返します。

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

警告
rexecd は root のログインを許可しません。 ただし -i オプションがコマンド行 (典型的には /etc/inetd.conf ) で指定された場合は除きます。 rexecd はまた /etc/ftpusers にリストされたユーザでのアクセス、 パスワードの無いユーザのアクセスを許可しません。 これらはすべて重大なセキュリティホールでした。 rexec/rexecd のコンセプトは、メジャーなセキュリティホールと、それをさせない ための例です。 rexecd は /etc/inetd.conf ではデフォルトで無効になっています。

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

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

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

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

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

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

remote directory.
    ホームディレクトリへの chdir コマンドが失敗しました。

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

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

関連項目
rexec(3)

バグ
すべてのデータとパスワードを交換する場合に、それらの暗号化を行なう機構が 用意されるべきでしょう。

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