日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、全翻訳済み)
6.4-STABLE-K, 7.2-STABLE-K, 8.0-STABLE-K は現在、 作成中で日々更新されています。 最新の snapshots を元に作成しています。
RCMD(3) FreeBSD Library Functions Manual RCMD(3)
名称
rcmd, rresvport, iruserok, ruserok - リモートコマンドにストリームを戻すル
ーチン
書式
#include <unistd.h>
int
rcmd(char **ahost, int inport, const char *locuser, const char *remuser,
const char *cmd, int *fd2p)
int
rresvport(int *port)
int
iruserok(u_long raddr, int superuser, const char *ruser,
const char *luser)
int
ruserok(const char *rhost, int superuser, const char *ruser,
const char *luser)
解説
rcmd() 関数はスーパユーザが使用するもので、予約されたポート番号に従って認
証スキームを使用してコマンドをリモートマシンで実行します。 rresvport() 関
数は、権利があるポートスペースのアドレスとともにソケットの記述子を戻しま
す。 ruserok() 関数はサーバが使用するもので、 rcmd() を使用してサービスを
要求するクライアントを認証します。3 つすべての関数は同じファイルに存在
し、 rshd(8) サーバによって使用されます。
rcmd() 関数は gethostbyname(3) を使用してホスト *ahost を調べ、ホストが存
在しない場合は -1 を戻します。ホストが存在する場合は、ホストの標準名に
*ahost を設定し、既知のインターネットポート inport に常駐するサーバとの接
続を確立します。
接続が確立されると、タイプ SOCK_STREAM のインターネットドメインのソケット
が呼び出し側に戻され、 stdin と stdout としてリモートコマンドに指定されま
す。 fd2p が 0 以外である場合は、制御プロセスの任意のチャンネルが設定さ
れ、その記述子が *fd2p に配置されます。制御プロセスは、このチャンネルでコ
マンド (ユニット 2) から診断出力を戻し、 UNIX 信号番号としてこのチャンネ
ルのバイトを受け取り、コマンドのプロセスグループに転送します。 fd2p が
0 である場合は、 stderr (リモートコマンドのユニット 2) が stdout と同じ
ように作成されます。任意の信号をリモートプロセスに送信する準備はされませ
んが、バンド外のデータを使用することで注目を得ることはできます。
プロトコルの詳細については、 rshd(8) を参照してください。
rresvport() 関数は、権利があるアドレスが結び付いたソケットを入手します。
このソケットは、 rcmd() やその他の関数での使用に適しています。権利がある
インターネットポートは、
0 から 1023 の範囲にあるものです。この種のアドレスをソケットに結合できる
のはスーパユーザのみです。
iruserok() 関数と ruserok() 関数は、 gethostbyname(3) ルーチンが戻すリモ
ートホストの IP アドレスか名前、2 つのユーザ名、ローカルユーザの名前がス
ーパユーザの名前であるかどうかを示すフラグを使用します。ユーザがスーパユ
ーザ でない場合は、 /etc/hosts.equiv ファイルをチェックします。この検索が
実行されない場合、またはこの検索で問題が発生した場合は、ローカルユーザの
ホームディレクトリの .rhosts をチェックし、サービスの要求が許可されている
かどうかを確認します。
このファイルが存在しない場合や通常のファイルでない場合、またはユーザやス
ーパユーザ以外がこのファイルを所有する場合、あるいは所有者以外がこのファ
イルに書き込める場合、チェックは自動的にエラーとなります。マシン名が
``hosts.equiv'' ファイルにリストされている場合、またはホストとリモートユ
ーザ名が ``.rhosts'' ファイルに存在する場合は 0 が戻されます。その他の場
合、 iruserok() と ruserok() は -1 を戻します。 gethostname(3) で入手した
ローカルドメインがリモートドメインと同じである場合は、マシン名のみを指定
する必要があります。
iruserok() 関数は、セキュリティの理由で高く評価されます。 ruserok() 関数
は DNS 全体を信用する必要があり、侵害される可能性がありますが、
iruserok() は最大でもローカル DNS を信頼する必要しかありません。
診断
rcmd() 関数は、問題がなければ有効なソケット記述子を戻します。エラーが発生
した場合は -1 を戻し、診断メッセージを標準エラーに出力します。
rresvport() 関数は、問題がなければ有効で結合したソケット記述子を戻しま
す。エラーが発生した場合は -1 を戻し、エラーの原因に従ってグローバル変数
errno を設定します。「すべてのネットワークポートが使用されている」ことを
示す場合は、エラーコード EAGAIN がオーバロードされます。
関連項目
rlogin(1), rsh(1), intro(2), rexec(3), rexecd(8), rlogind(8),
rshd(8)
歴史
この関数は、 4.2BSD に追加されました。
4.2 Berkeley Distribution February 15, 1996 2