rshd(8) FreeBSD 一般コマンドマニュアル

rshd

前のページ 上に戻る 次のページ

rshd




解説

     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.   /var/run/nologin ファイルが存在し、ユーザがスーパユーザでない場合、
          接続を切断します。 nologin ファイルの名前に関しては、 login.conf に
          てローカルユーザのログインクラスに関する nologin ケーパビリティが優
          先します。ログインクラスは、ログイン時間(times.allow と times.denny
          ケーパビリティ) およびリモートホスト(hosts.allow と hosts.denny ケー
          パビリティ)による rsh(1) アクセスの制限にも使われます。


     -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), nologin(5), services(5),
     全てのデータについて暗号化を行なう機能が実装されるべきです。

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


歴史

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

FreeBSD 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス