Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rshd(8C) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

rsh(1)

rcmd(3X)

RSHD(8C)  —  NEWS-OS Programmer’s Manual

名称

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

形式

/etc/rshd

解説

rshd は、 rcmd(3X) ルーチンのためのサーバであり、したがって、 rsh(1C) プログラムのためのサーバといえます。 このサーバは、信頼されているホストからの 特権ポート番号を基にした認証 (パスワードのチェック無しに実行を許可すること) を伴ったリモート実行機能を提供します。

rshd は、“cmd”サービス指定の中で 示されているポートへの サービス要求を待ちます (services(5) 参照)。サービス要求を受け取ると、 次のプロトコルを開始します。

1)サーバがクライアントのソースポートを チェックします。 そのポートが範囲 0−1023 にない場合には、 サーバは接続を中止します。

2)サーバは、ソケットから ナル(‘\0’)バイトまでのキャラクタを読み取ります。 結果として得られる文字列は、 1つのASCII表現の 10進数として解釈されます。

3)ステップ1) で受け取られた数は、 ゼロ以外である場合には、 stderr のために使用される 二次ストリームのポート番号として 解釈されます。その後、 クライアントのマシンの指定された ポートへの第二の接続が行われます。 この接続のソースポートも範囲 0−1023 にあります。

4)サーバは、クライアントの ソースアドレスをチェックし、 対応するホスト名を要求します (gethostbyaddr(3N)、 hosts(5)、 named(8) 参照)。 そのホスト名が判定できない場合には、 そのホストのドット表記法による表現が使用されます。

5)ナルで終わっている 最高 16文字までのユーザ名が、 最初の接続のソケットで取り込まれます。 このユーザ名は、 クライアント のマシンでのユーザIDとして解釈されます。

6)ナルで終わっている 最高 16文字までのユーザ名が、 最初の接続のソケットで取り込まれます。 このユーザ名は、 サーバ のマシンで使用するユーザIDとして解釈されます。

7)シェルへ渡されるナルで終わっているコマンドが、 開始ソケットで取り込まれます。 コマンドの長さは、 システムの引数リストのサイズの上限で制限されます。

8)次に、 rshd は、次の手順に従って、 そのユーザが正当なユーザであることを確かめます。 ローカル(サーバ側)ユーザ名がパスワードファイル内で検索され、 chdir が実行されてそのユーザの ホームディレクトリへ変更されます。 パスワードファイル内の検索または chdir が失敗した場合には、 接続は終了させられます。 ユーザがスーパーユーザ(ユーザIDが 0)ではない場合には、 “同等”と見なされるホストのリストを /etc/hosts.equiv ファイルで調べます。 クライアントのホスト名が このファイルにある場合には、 認証は成功と見なされます。 この検索が失敗した場合、 またはユーザがスーパーユーザである場合には、 そのリモートユーザのホームディレクトリにあるファイル .rhosts にマシン名とクライアントのマシンにおける ユーザIDがあるかどうかがチェックされます。 この検索が失敗した場合には、接続は終了させられます。

9)最初の接続のソケットにナルが返され、 コマンド行が、そのユーザの通常のログインシェルへ渡されます。 そのシェルは、 rshd によって確立された 第二のネットワーク接続を受け継ぎます。

診断

以下に列記されている診断メッセージの うちの最後のものは除き、 すべての診断メッセージは 最初の接続のソケットに返され、 その後にネットワーク接続がクローズされます。 エラーは、値 1 を有する 1つの先行バイトによって 示されます(ログインシェルの実行に先行する すべてのステップが成功のうちに完了したとき、 上記のステップ 9) で 0 が返されます)。

“locuser too long”
クライアントのマシンでのユーザの名前が 16文字より長い。

“remuser too long”
リモートマシンでのユーザの名前が 16文字より長い。

“command too long”
渡されたコマンド行が、(システムに構成設定されている)引数リストの サイズを超えている。

“Login incorrect.”
そのユーザ名に対するパスワードファイルエントリが存在していなかった。

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

“Permission denied.”
前述の認証手続きが失敗した。

“Can’t make pipe.”
stderr のために必要なパイプが作成されなかった。

“Try again.”
サーバによる fork が失敗した。

“<shellname>: ...”
そのユーザのログインシェルを開始できなかった。 このメッセージは、 stderr に関する接続に返され、 フラグバイトは先頭に付加されない。

関連事項

rsh(1), rcmd(3X)

バグ

ここで使用されている認証手続きは、 各クライアントマシンと接続媒体の完全な状態を 前提にしています。 これは安全ではありませんが、 “オープンな”環境では有用です。

すべてのデータ交換を暗号化できる機能が必要です。

もっと拡張性のある機能を有するプロトコルを使用する必要があります。

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026