OSDN Git Service

(split) LDP: Restore and add Copyrights for draft pages
[linuxjm/LDP_man-pages.git] / draft / man3 / rcmd.3
1 .\"     $NetBSD: rcmd.3,v 1.9 1996/05/28 02:07:39 mrg Exp $
2 .\"
3 .\" Copyright (c) 1983, 1991, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\"    notice, this list of conditions and the following disclaimer.
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\"    notice, this list of conditions and the following disclaimer in the
14 .\"    documentation and/or other materials provided with the distribution.
15 .\" 3. All advertising materials mentioning features or use of this software
16 .\"    must display the following acknowledgement:
17 .\"     This product includes software developed by the University of
18 .\"     California, Berkeley and its contributors.
19 .\" 4. Neither the name of the University nor the names of its contributors
20 .\"    may be used to endorse or promote products derived from this software
21 .\"    without specific prior written permission.
22 .\"
23 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 .\" SUCH DAMAGE.
34 .\" %%%LICENSE_END
35 .\"
36 .\"     @(#)rcmd.3      8.1 (Berkeley) 6/4/93
37 .\"
38 .\" Contributed as Linux man page by David A. Holland, 970908
39 .\" I have not checked whether the Linux situation is exactly the same.
40 .\"
41 .\" 2007-12-08, mtk, Converted from mdoc to man macros
42 .\"
43 .\"*******************************************************************
44 .\"
45 .\" This file was generated with po4a. Translate the source file.
46 .\"
47 .\"*******************************************************************
48 .\"
49 .\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
50 .\" Translated Mon Mar 1 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
51 .\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
52 .\" Updated 2012-05-05, Akihiro MOTOKI <amotoki@gmail.com>
53 .\"
54 .TH RCMD 3 2012\-04\-23 Linux "Linux Programmer's Manual"
55 .SH 名前
56 rcmd, rresvport, iruserok, ruserok, rcmd_af, rresvport_af, iruserok_af,
57 ruserok_af \- リモートコマンドにストリームを返す関数群
58 .SH 書式
59 .nf
60 \fB#include <netdb.h> \ \ \fP/* Or <unistd.h> on some systems */
61 .sp
62 \fBint rcmd(char **\fP\fIahost\fP\fB, int \fP\fIinport\fP\fB, const char *\fP\fIlocuser\fP\fB, \fP
63 \fB         const char *\fP\fIremuser\fP\fB, const char *\fP\fIcmd\fP\fB, int *\fP\fIfd2p\fP\fB);\fP
64 .sp
65 \fBint rresvport(int *\fP\fIport\fP\fB);\fP
66 .sp
67 \fBint iruserok(uint32_t \fP\fIraddr\fP\fB, int \fP\fIsuperuser\fP\fB, \fP
68 \fB             const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB);\fP
69 .sp
70 \fBint ruserok(const char *\fP\fIrhost\fP\fB, int \fP\fIsuperuser\fP\fB, \fP
71 \fB            const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB);\fP
72 .sp
73 \fBint rcmd_af(char **\fP\fIahost\fP\fB, int \fP\fIinport\fP\fB, const char *\fP\fIlocuser\fP\fB, \fP
74 \fB            const char *\fP\fIremuser\fP\fB, const char *\fP\fIcmd\fP\fB, int *\fP\fIfd2p\fP\fB,\fP
75 \fB            sa_family_t \fP\fIaf\fP\fB);\fP
76 .sp
77 \fBint rresvport_af(int *\fP\fIport\fP\fB, sa_family_t \fP\fIaf\fP\fB);\fP
78 .sp
79 \fBint iruserok_af(uint32_t \fP\fIraddr\fP\fB, int \fP\fIsuperuser\fP\fB, \fP
80 \fB                const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB, sa_family_t \fP\fIaf\fP\fB);\fP
81 .sp
82 \fBint ruserok_af(const char *\fP\fIrhost\fP\fB, int \fP\fIsuperuser\fP\fB, \fP
83 \fB               const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB, sa_family_t \fP\fIaf\fP\fB);\fP
84 .fi
85 .sp
86 .in -4n
87 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
88 .in
89 .sp
90 \fBrcmd\fP(), \fBrcmd_af\fP(), \fBrresvport\fP(), \fBrresvport_af\fP(),
91 \fBiruserok\fP(), \fBiruserok_af\fP(), \fBruserok\fP(), \fBruserok_af\fP():
92 _BSD_SOURCE
93 .SH 説明
94 \fBrcmd\fP() 関数は、スーパーユーザーがリモートマシンでコマンドを実行する
95 ために 用いられる。このとき特権ポート番号をもとにした認証スキームが 用
96 いられる。 \fBrresvport\fP() 関数は、特権ポート空間のアドレスを持つソケッ
97 トの ディスクリプターを返す。 \fBiruserok\fP() 関数と \fBruserok\fP() 関数は、
98 \fBrcmd\fP() でサービス要求を行ったクライアントの認証を行うために サーバー
99 が用いる関数である。 以上の 4 つの関数は、 \fBrshd\fP(8) サーバーによって
100 (他の関数とともに) 利用される。
101 .SS rcmd()
102 .PP
103 \fBrcmd\fP()  関数は \fBgethostbyname\fP(3)  を用いて \fI*ahost\fP の参照を行う。ホストが存在しない場合は \-1
104 を返す。 見つかった場合は \fI*ahost\fP にホストの標準名 (standard name) をセットして、 予約されているインターネットポート
105 \fIinport\fP 経由でサーバーへの接続を確立する。
106 .PP
107 接続に成功したら、インターネットドメインに存在するタイプ \fBSOCK_STREAM\fP のソケットが呼び出しもとに返される。
108 このソケットの相手側はリモートコマンドの \fIstdin\fP および \fIstdout\fP に接続される。 \fIfd2p\fP
109 がゼロでない場合は、制御プロセスへの接続がもう一つ用意され、 そのディスクリプターが \fI*fd2p\fP にセットされる。
110 制御プロセスはリモートコマンドからの標準エラー出力 (unit 2) を このチャンネルに返す。 また制御プロセスはこの接続から受け取ったバイトデータを
111 UNIX シグナルの番号として扱い、リモートコマンドのプロセス グループへとシグナルを送る。 \fIfd2p\fP がゼロの場合は、 \fIstderr\fP
112 (リモートコマンドの unit 2) は \fIstdout\fP と一緒にまとめられる。またこの場合はリモートプロセスへ
113 任意のシグナルを送ることはできなくなる。 ただし帯域外 (out\-of\-band) データを用いれば、
114 リモートプロセスの注意を引くことはできるかもしれない。
115 .PP
116 プロトコルの詳細は \fBrshd\fP(8)  に記述されている。
117 .SS rresvport()
118 .PP
119 .\"
120 \fBrresvport\fP() 関数は特権ポートにバインドされたソケットを取得するために
121 用いられる。 このソケットは \fBrcmd\fP() などの関数での利用に適している。
122 インターネットポートの特権ポートは、 0 から 1023 の範囲である。特権プロ
123 セス (\fBCAP_NET_BIND_SERVICE\fP) だけが特権ポートをバインドすることができ
124 る。 glibc の実装では、この関数は特権ポートの検索範囲を 512 から 1023
125 までの範囲に制限している。 \fIport\fP 引き数は入出力両用で使用される。呼び
126 出し時にこの引き数で渡された値は特権ポートを巡回検索する際の開始ポイン
127 トとして使用され、(成功で) 返る際にはこの引き数にバインドされたポート
128 番号が格納される。
129 .SS "iruserok() と ruserok()"
130 .PP
131 \fBiruserok\fP()  と \fBruserok\fP()  関数は、まず以下の引数を取る: リモートホスト (\fBiruserok\fP()  は IP
132 アドレスで、 \fBruserok\fP()  はホスト名で指定)、 2 つのユーザー名、ローカルユーザーの名前が
133 スーパーユーザーのものであるかどうかを示すフラグ、である。 もしユーザーが\fBスーパーユーザーではない\fP場合は、これらの関数は
134 \fI/etc/hosts.equiv\fP ファイルをチェックする。ファイルが見つからなかったり、 内容のチェックに失敗した場合には、
135 ローカルユーザーのホームディレクトリにある \fI.rhosts\fP ファイルをチェックして、サービス要求が許可されているかどうか調べる。
136 .PP
137 このファイルが存在しなかったり、 通常ファイル (regular file) ではなかったり、 指定ユーザーまたはスーパーユーザー以外の所有だったり、
138 所有者以外から書き込み可能だったりした場合には、 このチェックは自動的に失敗する。 マシンの名前が \fIhosts.equiv\fP にリストされていたり、
139 ホストとリモートユーザーの名前が \fI.rhosts\fP ファイルに書かれていた場合には 0 が返される。 それ以外の場合には、
140 \fBiruserok\fP()  と \fBruserok\fP()  は \-1 を返す。 (\fBgethostname\fP(2)  によって取得される)
141 ローカルドメインがリモートのドメインと同じ場合は、 マシンの名前だけを指定すればよい。
142 .PP
143 リモートホストの IP アドレスがわかっている場合は、 \fBruserok\fP()  よりも \fBiruserok\fP()\fBを用いる方が良いだろう。\fP
144 \fBruserok\fP()  はリモートホストの所属するドメインの DNS サーバーが信頼できなくても 使用できるからである。
145 .SS "*_af() 版"
146 上記で述べた関数は全て IPv4 (\fBAF_INET\fP) ソケットで動作する。
147 "_af" 版では追加の引き数があり、この引き数でソケットアドレス
148 ファミリーを指定できる。これらの関数では、 \fIaf\fP 引き数には
149 \fBAF_INET\fP か \fBAF_INET6\fP が指定できる。
150 \fBrcmd_af\fP() では追加で \fBAF_UNSPEC\fP も指定できる。
151 .SH 返り値
152 \fBrcmd\fP()  関数は成功すると有効なソケットディスクリプターを返す。 失敗すると \-1 を返し、標準エラー出力に診断メッセージを 表示する。
153 .PP
154 \fBrresvport\fP()  関数は、成功するとバインドされた有効なソケットディスクリプターを返す。 失敗すると \-1 を返し、グローバル変数
155 \fIerrno\fP をエラーの原因に対応する値にセットする。 エラーコード \fBEAGAIN\fP
156 は、この関数においては「すべてのネットワークポートが使用中」 という意味を表す。
157
158 \fBruserok\fP() と \fBiruserok\fP() の返り値については、上述の説明を参照。
159 .SH バージョン
160 関数 \fBiruserok_af\fP(), \fBrcmd_af\fP(), \fBrresvport_af\fP(),
161 \fBruserok_af\fP() は glibc バージョン 2.2 以降で提供されている。
162 .SH 準拠
163 POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステムに存在する。
164 これらの関数は 4.2BSD で登場した。 "_af" が付くバージョンはより最近に
165 追加されたもので、あまり多くのシステムには存在しない。
166 .SH バグ
167 .\" Bug filed 25 Nov 2007:
168 .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=5399
169 \fBiruserok\fP() と \fBiruserok_af\fP() は glibc バージョン 2.12 以降のヘッダ
170 でのみ宣言されている。
171 .SH 関連項目
172 \fBrlogin\fP(1), \fBrsh\fP(1), \fBintro\fP(2), \fBrexec\fP(3), \fBrexecd\fP(8),
173 \fBrlogind\fP(8), \fBrshd\fP(8)
174 .SH この文書について
175 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
176 である。プロジェクトの説明とバグ報告に関する情報は
177 http://www.kernel.org/doc/man\-pages/ に書かれている。