スポンサーリンク

RSHD(8) FreeBSD システム管理者マニュアル RSHD(8)

名称

rshd − リモートシェルのサーバ

書式

rshd [−?DLaln]

解説

rshd ユーティリティは、 rcmd(3) ルーチンのためのサーバであり、結果として rsh(1) ユーティリティの実行のために必要となるサーバです。 rshd は、信頼で きるホストからの特権ポート番号に基づいた認証を行なうことによって、プログ ラムのリモート実行機能を提供します。

rshd ユーティリティは、 ‘‘cmd’’ サービスに割り当てられたポート (services(5) 参照) でサービス要求を受け付けます。サービス要求を受信する と、サーバは以下の手順を開始します:

       1. サーバは、クライアントの要求元ポート番号のチェックをおこないます。要求元ポート番号が 512 から 1023 の範囲にない場合、サーバは接続を強制切断します。

2. サーバは、ソケットから ヌルバイト (‘\0’) を検出するまで文字を読みま す。受信文字列は、 ASCII コードによる 10 進数の数値に変換します。

3. ステップ 2 で受信した数値が 0 でない場合、その数値を 標準エラー出力 で使用する 2 番目のストリームのポート番号として解釈します。そしてク ライアントマシン上でも指定されたポート番号の 2 番目の接続を生成しま す。この 2 番目の接続の要求元ポート番号も、512 から 1023 の範囲で指 定します。

4. サーバは、クライアントの要求元アドレスをチェックし、該当するホスト名 を要求します (gethostbyaddr(3), hosts(5), named(8) を参照してくださ い)。ホスト名が特定できない場合、または確認したホスト名とアドレスと が一致しない場合、ドット表記法によるホストアドレスを用います。

5. 最初のソケットを介して、ヌル終端された最大 16 文字のユーザ名を取得し ます。ユーザ名は、 クライアントマシン上のユーザ識別に使用します。

6. 最初のソケットを介して、ヌル終端された最大 16 文字のユーザ名を取得し ます。ユーザ名は、 サーバマシン上のユーザ認証に使用します。

7. 最初のソケットを介して、シェルに渡されるべき、ヌル終端されたコマンド を取得します。コマンド長の制限は、システムの引数リストサイズの上限に 依存します。

8. rshd ユーティリティは、 /etc/hosts.equiv および当該ユーザのホーム ディレクトリ上に存在する .rhosts ファイルを用いる ruserok(3) を使用 して、ユーザ認証を行います。 −l オプションは、ユーザがスーパユーザで ない限り、 .rhosts ファイルに基づいた ruserok(3) のすべての認証をお こなわないようにします。

9. 最初のソケットを用いて ヌルバイトを返し、コマンドラインを、ユーザの 通常のログインシェルに渡します。シェルは rshd によって確立されたネッ トワーク接続を継承します。

オプションは次の通りです:

−?
使用方法のメッセージを表示し、終了します。

−D
TCP_NODELAY ソケットオプションを設定します。小さな連続する (back-to-back) 書き込みの性能を向上させますが、ネットワークトラ フィックは増えてしまいます。

−L
すべての成功したアクセスを syslogd(8) を経由して auth.info メッ セージとして、ログします。

−a
このフラグは無視されます。互換性のためにあります。

−l
ユーザがスーパユーザでない限り、ユーザの .rhosts ファイルを認証に 使用しません。

−n
トランスポートレベルの keepalive メッセージを無効にします。これに より、クライアントがクラッシュしたり到達不能になった場合に、セッ ションがタイムアウトするのを防ぎます。

診断

以下に示す例のうち最後のものを除き、すべての診断メッセージを最初のソケッ トを用いて返した後、すべての接続をクローズします。エラーは、先行する 1 バ イトとして値 1 が返されることでわかります (ログインシェル実行の前のすべて のステップが正常に完了した場合、上記のステップ 10 の処理で 0 を返しま す)。

       Locuser too long.

クライアントマシン上のユーザ名が、16 文字を超えています。

Ruser too long.
リモートマシン上のユーザ名が、16 文字を超えています。

Command too long.
渡されたコマンドラインの長さが、引数リストの大きさを超えています (システムに依存します)。

Login incorrect.
当該ユーザに関するエントリが、パスワードファイルに登録されていな いか、上述の認証手続きに失敗しました。

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

Logins not available right now.
ローカルユーザのログインクラスに対する login.conf において、許さ れた時間以外で rsh(1) ユーティリティが試されました。

Can’t make pipe.
標準エラー出力に必要なパイプを作成できませんでした。

Can’t fork; try again.
サーバによる fork(2) が失敗しました。

<shellname>: ...
ユーザのログインシェルを起動できませんでした。本メッセージの出力 は 標準エラー出力に関連づけられたコネクションを介して返されますの で、フラグバイトは先行しません。

関連項目

rlogin(1), rsh(1), gethostbyaddr(3), rcmd(3), ruserok(3), auth.conf(5), hosts(5), hosts.equiv(5), login.conf(5), services(5), named(8), rlogind(8), syslogd(8)

関連ファイル

       /etc/hosts

/etc/hosts.equiv
/etc/login.conf
$HOME/.rhosts
/var/run/nologin

/etc/pam.conf
rshd
は、 /etc/pam.conf エントリを ‘‘rsh’’ サービス名で 使用します。 (pam_unix のような) パスワードを要求する認 証モジュールはサポートされません。

バグ

ここで用いられているユーザ認証手順は、各クライアントマシンおよび接続媒体 が信頼できるものと仮定しています。これは安全ではないですが、 ‘‘オープン’’ な環境下では便利です。

全てのデータについて暗号化を行なう機能が実装されるべきです。

PAM 適用後は、 FreeBSD では .rhosts を正しく設定するほかに下記のパッチを 適用することが必要です。

      --- etc/pam.d/rsh.orig  Wed Dec 17 14:36:20 2003
      +++ etc/pam.d/rsh       Wed Dec 17 14:30:43 2003
      @@ -9 +9 @@

-auth

required

pam_rhosts.so

no_warn
+auth

required

pam_rhosts.so

no_warn

allow_root

TELNET のような、もっと拡張性のあるプロトコルが用いられるべきです。

歴史

IPv6 サポートは、WIDE/KAME プロジェクトが追加しました。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク