RSHD
Section: Maintenance Commands (8)
Index JM Home Page
BSD mandoc
Linux NetKit (0.17)
名前
rshd - リモートシェルのサーバ
書式
rshd [-ahlnL ]
説明
rshd サーバは、 rcmd(3) ルーチンのためのサーバであり、 結果として rsh(1) プログラムを実行するためのサーバである。 このサーバは、信頼できるホストからの特権ポート番号に基づいた認証を使い、 リモート実行機能を提供する。
rshd サーバは、``cmd'' サービスの仕様で指定されているポートで、 サービス要求を待つ。 services(5) を参照すること。 サービス要求を受信すると、以下の手順を開始する:
- サーバは、クライアントの要求元ポートをチェックする。 要求元ポートが 512 〜 1023 の範囲にない場合、 サーバは接続を中止する。
- サーバは、ソケットからヌルバイト (`\0') を検出するまで文字を読み込む。 読み込んだ文字列は、 ASCII 文字からなる 10 進数の数字として解釈される。
- ステップ 2 で受信した数値が 0 でない場合、 標準エラー で使う 2 番目のストリームのポートとして解釈される。 そして、2 番目の接続が指定されたポートでクライアントマシン上に生成される。 この 2 番目の接続の要求元ポートも 512 〜 1023 の範囲である。
- サーバは、クライアントの要求元アドレスをチェックし、 対応するホスト名を要求する ( gethostbyaddr(3) hosts(5), named(8) を参照すること)。 ホスト名が特定できない場合、 ドット表記法によるホストアドレスが使われる。 ホスト名がサーバと同じドメイン名のものである場合 (ドメイン名の後ろから 2 つが同じ場合)、 または -a オプションが指定されている場合、 ホスト名に対応するアドレスが要求され、 ホスト名とアドレスが対応しているかを確認する。 アドレス確認が失敗した場合、 ``Host address mismatch.'' というメッセージを出して、接続を中止する。
- ヌル文字で終端された最大 16 文字のユーザー名を、 最初のソケットから取得する。 ユーザー名は、 クライアント マシン上でユーザーを識別するために解釈される。
- ヌル文字で終端された最大 16 文字のユーザー名を、 最初のソケットから取得する。 ユーザー名は、 サーバ マシン上でユーザーを識別するために解釈される。
- ヌル文字で終端されたシェルに渡されるコマンドを、 最初のソケットから取得する。 コマンドの長さは、システムの引き数リストの上限に制限される。
-
rshd は ruserok(3) を使ってユーザーを確認する。 このプログラムは /etc/hosts.equiv ファイルと、ユーザーのホームディレクトリにある .rhosts ファイルを使う。 -l オプションは、 ruserok(3) に、ユーザー ``.rhosts'' ファイルに基づいた確認を行わせない (ユーザーがスーパーユーザーである場合と、 -h オプションが使われた場合を除く)。 -h オプションが指定されない場合、 スーパーユーザーアカウントは、このサービスでは全く使われない。
-l オプションは、 システムにインストールされている特定のバージョンの libc で 動作するかを確認せずに信用すべきではない (また、libc を更新した後もテストすべきである)。 なぜなら、libc のいくつかのバージョンでは rshd が使うフラグが信用できない。
また、 .rhosts システムの設計は、慎重にファイアウォールで囲まれた プライベートネットワーク以外では、 「全くもって安全でない」ことに注意すること。 それ以外の環境では rshd を完全に無効にすべきである。
- ヌル文字のバイトが最初のソケットから返され、 コマンド行がユーザーの通常のログインシェルに渡される。 このシェルは rshd によって確立されたネットワーク接続を拒否する。
トランスポートレベルのキープアライブメッセージは、 -n オプションが指定されない限り、有効である。 キープアライブメッセージを使うと、 クライアントがクラッシュしたり到達不能になった場合に、 セッションをタイムアウトすることができる。
-L オプションを使うことで、 全ての正常なアクセスを syslogd(8) を経由して auth.info メッセージとしてログに記録できる。 また、全ての失敗したアクセスを auth.notice としてログに記録できる。
返り値
以下にリストしたもののうち最後のものを除き、 全ての診断メッセージを最初のソケットを使って返した後、 全てのネットワーク接続を閉じる。 エラーは、先頭に値 1 のバイトをつけることで示される (ログインシェル実行前の全てのステップが正常に完了した場合、 上記のステップ 9 で 0 が返される)。
- Locuser too long.
- クライアントマシン上のユーザー名が、16 文字を超えている。
- Ruser too long.
- リモートマシン上のユーザー名が、16 文字を超えている。
- Command too long
- 渡されたコマンドラインの長さが、(システムで設定された) 引き数リストのサイズを超えている。
- Remote directory.
- ホームディレクトリへの chdir コマンドが失敗した。
- Permission denied.
- 上で説明した認証手続きが失敗した。 または、要求されたユーザー要求が存在しなかった (これらの条件は、故意に組み合わせた)。
- Can't make pipe.
- 標準エラー に必要なパイプが作成できなかった。
- Can't fork; try again.
- サーバによる fork が失敗した。
- <shellname>: ...
- ユーザーのログインシェルを起動できなかった。 このメッセージは、 標準エラー に関係づけられた接続を経由して返されるので、 フラグバイトが前に付かない。
関連項目
rsh(1), rcmd(3), ruserok(3)
バグ
ここで使われているユーザー認証手続きは、 クライアントマシンと接続媒体が完全であることを仮定している。 これは安全ではないが、「オープンな」環境では便利である。
通信する全てのデータを暗号化する機能が提供されるべきである。
(Telnet のような) もっと拡張性のあるプロトコルが用いられるべきである。
翻訳者謝辞
この man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/> による翻訳を参考にさせていただいた。
関連キーワード
サーバ,
要求,
ユーザー,
文字,
rshd,
接続,
ポート,
RSHD,
メッセージ,
マシン
Linux マニュアル 一覧
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]
Index
- 名前
- 書式
- 説明
- 返り値
- 関連項目
- バグ
- 翻訳者謝辞
This document was created by man2html, using the manual pages.
Time: 12:08:56 GMT, June 11, 2022