rexecd は rexec(3) ルーチンのためのサーバである。 このサーバは、ユーザー名とパスワードによる認証に基づいた、 リモート実行機能を提供する。
rexecd は ``exec'' サービスの仕様で指示されたポートへのサービス要求を監視する。 services(5) を参照すること。 サービス要求を受信すると、以下のプロトコルが開始される。
- サーバはソケットから NUL 文字のバイト (‘
\0’) を受信するまで文字を読み取る。 受信した文字は ASCII 文字からなる 10 進数の数字として解釈される。 - ステップ 1 で受信された番号が 0 でない場合、 その番号は stderr のために使われる 2 次ストリームのポート番号であると解釈される。 その後、第 2 の接続がクライアントマシン上の 指定されたポートとの間に生成される。
- NUL 文字で終端された最大 16 文字のユーザー名が、 最初のソケットから取得される。
- NUL 文字で終端され、暗号化されていない最大 16 文字のパスワードが、 最初のソケットから取得される。
- NUL 文字で終端されたシェルに渡されるコマンドが、 最初のソケットから取得される。 コマンドの長さは、システムの引き数リストの上限を越えない長さに制限される。
- その後、
rexecd はログイン時と同様のユーザー認証を行う。 認証が成功した場合、ユーザーのホームディレクトリに移動し、 そのユーザーに対してユーザーとグループの保護を行う。 これらのステップのどれかで失敗した場合、 接続を切断し、診断メッセージを返す。 - NUL 文字のバイトが最初のソケットに返され、 コマンドラインがユーザーの通常のログインシェルに渡される。 シェルは
rexecd によって確立されたネットワーク接続を継承する。
通信される全てのデータとパスワードについて、 暗号化を可能にする機能が用意されるべきである。
rexecd コマンドは 4.2BSD で登場した。
この man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/> による翻訳を参考にさせていただいた。