Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ruserok(3) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

rlogin(1C)

rsh(1C)

intro(2)

hosts.equiv(5)

rexec(3)

rexecd(8C)

rlogind(8C)

rshd(8C)

RCMD(3)  —  NEWS-OS Programmer’s Manual

名称

rcmd, rresvport, ruserok − ストリームをリモートコマンドへ返すルーチン

形式

rem = rcmd(ahost, inport, locuser, remuser, cmd, fd2p);
char ∗∗ahost;
int inport;
char ∗locuser, ∗remuser, ∗cmd;
int ∗fd2p;

s = rresvport(port);
int ∗port;

ruserok(rhost, superuser, ruser, luser);
char ∗rhost;
int superuser;
char ∗ruser, ∗luser;

解説

rcmd は、 スーパーユーザがリモートマシン上でコマンドを 実行するルーチンで、 あらかじめ予約されたポート番号を 基にしたあるアクセス権の決定方式を 使用します。 rresvport は、 ソケットの記述子を 返すルーチンです。 この記述子は、 ある特権ポート空間のアドレスを 持つものです。 ruserok は、 サーバが特定のクライアントから要求されるサービスに応えるために 使用するルーチンで、 rcmd を使用します。 これら 3 つの関数は、 すべて同じファイル内にあり、 特に rshd(8C) のサーバに使用されます。

rcmd は、 gethostbyname(3N) を 使用して、 ホスト ∗ahost を 検索します。 そして、 ホストが存在しない場合、 −1 を返します。 そうでない場合、 ∗ahost を ホストの標準名にセットします。 そして、 サーバが、 既知のインターネットポートに常駐し、 コネクションが確立します。

正常にコネクションが成立した場合、 インターネットドメイン内に SOCK_STREAM タイプの ソケットが呼び出し側に返され、 stdin および stdout としてリモートコマンドに与えられます。 fd2p がゼロでない場合、 制御プロセスへの予備チャネルが設定され、 その記述子を ∗fd2p にセットします。 制御プロセスは、 このチャンネル上にコマンド (ユニット 2) からの診断出力を 返します。 さらに、 このチャンネル上で UNIX のシグナル番号としてデータを 受信し、 コマンドのプロセスグループへ転送します。 fd2p が 0 の場合、 stderr (リモートコマンドのユニット 2) は、 stdout と同じように作成されます。 外部のデータの使用によって、 警告を 受ける可能性がありますが、 リモートプロセスへ任意のシグナルを 送信する規約はありません。

プロトコルについては、 rshd(8C) で詳細に述べられています。

rresvport ルーチンは、 特定のアドレスと結び付けられたソケットを 獲得するのに使用します。 このソケットは、 rcmd などのルーチンで使用するのに適しています。 特定のインターネットポートは、 0 から 1023 の範囲です。 スーパーユーザだけが、 この種のアドレスを ソケットに結び付けることが許可されています。

ruserok は、 gethostbyaddr(3N) が返すものと同様のリモートホスト名、 2 個のユーザ名と、 ローカルユーザ名がスーパーユーザかどうかを 示すフラグを 受け取ります。 そして サービスの要求を許可するかどうかを決定するために /etc/host.equiv ファイルを検査し、許可していない場合には、 ローカルユーザのホームディレクトリの .rhosts も検査します。 マシン名が“hosts.equiv”に記載されているか、 あるいはホストおよびリモートユーザ名が“.rhosts”ファイルに見つかった場合、 値 0 が返ります。 そうでない場合、 値 -1 が返ります。 superuser フラグが1の場合、 “hosts.equiv”ファイルの検査は行いません。 ローカルドメイン (gethostname(2)から得られた) が、 リモートドメインと同じ場合、 マシン名だけを指定することができます。

関連事項

rlogin(1C), rsh(1C), intro(2), hosts.equiv(5), rexec(3), rexecd(8C), rlogind(8C), rshd(8C)

診断

rcmd は正常終了した場合、 有効なソケット記述子を 返します。 エラーを 発生した場合 −1 を 返し、 標準エラーに診断メッセージを 書き込みます。

rresvport は正常終了した場合、 指定範囲内の有効なソケット記述子を 返します。 エラーを 発生した場合は −1 を 返し、 エラーの原因に応じて、 グローバル変数 errno がセットされます。 エラーコード EAGAIN は、 “すべてのネットワークポートが使われている”の意味になります。

NEWS-OSRelease 4.2.1R

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