diff options
Diffstat (limited to 'ja/man/man8/inetd.8')
| -rw-r--r-- | ja/man/man8/inetd.8 | 485 |
1 files changed, 485 insertions, 0 deletions
diff --git a/ja/man/man8/inetd.8 b/ja/man/man8/inetd.8 new file mode 100644 index 0000000000..c78e2b0c4b --- /dev/null +++ b/ja/man/man8/inetd.8 @@ -0,0 +1,485 @@ +.\" Copyright (c) 1985, 1991, 1993, 1994 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" from: @(#)inetd.8 8.3 (Berkeley) 4/13/94 +.\" jpman %Id: inetd.8,v 1.2 1997/05/16 07:22:24 yugawa Stab % +.\" %Id: inetd.8,v 1.9.2.3 1997/09/22 06:23:24 charnier Exp % +.\" +.Dd February 7, 1996 +.Dt INETD 8 +.Os BSD 4.4 +.Sh 名称 +.Nm inetd +.Nd インターネット +.Dq スーパサーバ +.Sh 書式 +.Nm inetd +.Op Fl d +.Op Fl l +.Op Fl R Ar rate +.Op Fl a Ar address +.Op Fl p Ar filename +.Op Ar configuration file +.Sh 解説 +.Nm +は、ブート時に +.Pa /etc/rc +の中で起動されます( +.Xr rc 8 +参照)。起動されると、 +.Nm +は定められたインターネットソケットを監視し、接続要求を待ちます。 +監視しているソケットに対して接続要求が出されると、 +.Nm +はそのソケットに対応したサービスを +判定し、サービスを提供するプログラムを起動します。 +サーバプログラムはサービスソケットを標準入力・標準出力・ +エラー出力として起動されます。 +サービスプログラムが完了すると、 +.Nm +は再びソケットの監視を行ないます(後述するような例外もあります)。 +.Nm +を用いれば 1 つのデーモンで +複数のサービスプログラムを起動することができるので、 +システムの負荷を軽減することができます。 +.Pp +.Nm +は、起動時に以下のオプションを指定できます。 +.Bl -tag -width indent +.It Fl d +デバッグモードにします。 +.It Fl l +ログをとります。 +.It Fl R Ar rate +一分間に起動できる最大のサービス数を指定します。デフォルトは 256 です。 +.It Fl a +監視する IP アドレスを指定します。 +.It Fl p +デフォルトとは異なるプロセス ID を保持するファイルを指定します。 +.El +.Pp +.Nm +は実行時に設定情報を設定ファイルから読み込みます。 +デフォルトでは設定ファイルは +.Pa /etc/inetd.conf +です。 +設定ファイルの各フィールドにはエントリが 1 つなければなりません。 +各フィールドのエントリはタブやスペースで区切ります。 +コメントは行頭に ``#'' をつけます。 +設定ファイルのフィールドは以下のものからなります: +.Pp +.Bd -unfilled -offset indent -compact +サービス名 +ソケットタイプ +プロトコル +{wait/nowait}[/max-child] +ユーザ名 +サーバプログラム名 +サーバプログラム引数 +.Ed +.Pp +.No Tn "ONC RPC" +ベースのサービスを記述する場合には、以下のエントリを記述します。 +.Pp +.Bd -unfilled -offset indent -compact +サービス名/バージョン +ソケットタイプ +RPC/プロトコル +ユーザ名 +サーバプログラム名 +サーバプログラム引数 +.Ed +.Pp +.Nm +が起動することのできるサービスは二種類あります。 +一つは標準で、もう一つは TCPMUX です。 +標準サービスには割り当てられた well-known ポートがあります。 +これは公式のインターネット標準を実装したサービスや BSD 特有のサービスです。 +.Tn RFC 1078 +に書かれているように、TCPMUX は非標準サービスであり、 +well-known ポートが割り当てられていません。 +そういった非標準サービスは、あるプログラムが +.Dq tcpmux +well-known ポートに接続してそのサービス名を指定したとき、 +.Nm +によって起動されます。 +この機能はローカルに開発されたサーバを追加するときに +便利です。 +.Pp +.Em サービス名 +のエントリには、 +.Pa /etc/services +ファイルに記述されているサービス名が記述されます。 +.Dq 内部 +サービス (後述) については、 +名前としてそのサービスのオフィシャル名 +(すなわち +.Pa /etc/services +内の最初のエントリ)を指定 +.Em しなければなりません。 +.No Tn "ONC RPC" +ベースのサービスを指定するためには、このフィールドは +.Pa /etc/rpc +に書かれた有効な RPC サービス名でなければなりません。 +.Dq / +の右の部分が RPC のバージョン番号です。バージョン番号は、 +数字もしくは、バージョンの幅(レンジ)で指定します。 +幅を指定する場合は低い番号から高い番号を指定します。たとえば +.Dq rusers/1-3 +のように記述します。 +TCPMUX サービスでは、 +.Em サービス名 +のフィールドは、文字列 +.Dq tcpmux +、スラッシュ、そしてローカルに選ばれたサービス名から +なります。 +.Pa /etc/services +に書かれたサービス名と +.Dq help +は予約済であり、ローカルなサービス名には使用できません。 +TCPMUX サービスのためにユニークな名前をつけるには、 +頭に組織名をつけ、末尾にバージョン番号をつけるとよいでしょう。 +.Pp +.Em ソケットタイプ +のエントリは、 +.Dq stream , +.Dq dgram , +.Dq raw , +.Dq rdm , +.Dq seqpacket +のいずれかである必要があります。それぞれ、ソケットが +stream, +datagram, +raw, +reliably delivered message, +sequenced packet socket +である場合に対応しています。 +TCPMUX サービスは +.Dq stream +を使わなければなりません。 +.Pp +.Em プロトコル +のエントリには、 +.Pa /etc/protocols +に記述されている有効なプロトコル名が記述されます。 +例えば +.Dq tcp +や +.Dq udp +などです。RPC ベースのサービスの場合、 +.Dq rpc/tcp +や +.Dq rpc/udp +のような指定になります。 +TCPMUX サービスは +.Dq tcp +を使わなければなりません。 +.Pp +.Em wait/nowait +エントリは、 +.Nm +によって起動されたサーバがサービスアクセスポイントに +関連付けられたソケットを引き継ぐかどうか、すなわちサーバが終了するまで +.Nm +が新しいサービス要求を監視するのを待つ必要があるか否かを +指定します。 +datagram サーバは、特定のサービスアドレスと結び付いた +datagram ソケットで毎回起動されるため、 +.Dq wait +を使わなければなりません。こういったサーバは、終了する前に少なくとも +1 データグラムをソケットから読まなければなりません。 +もし datagram サーバが相手に接続したときソケットを +開放するなら、 +.Nm +はソケットに対するメッセージをさらに受けることができます。 +このようなサーバは +.Dq マルチスレッド +サーバと呼ばれます。 +サーバはソケットから datagram を一つ読み込み、相手に接続する新しい +ソケットをつくります。 +サーバは fork() を行い、親プロセス側は終了なければいけません。 +これにより +.Nm +は新しいサービス要求をチェックし、新しいサーバを起動することが +できるようになります。 +入って来る全ての datagram を処理し、 +時間切れまで動作する datagram サーバは、 +.Dq シングルスレッド +サーバと呼ばれます。 +.Xr comsat 8 , +.Pq Xr biff 1 , +.Xr talkd 8 +は後者のタイプの datagram サーバの例です。 +.Xr tftpd 8 +はマルチスレッドで動く datagram サーバの例です。 +.Pp +stream ソケットを使うサーバは一般にマルチスレッドで動き +.Dq nowait +エントリを使います。 +こういったサーバへの接続要求は +.Nm +で受け付けられ、新たに受理し、クライアントにつながった +ソケットのみがサーバに与えられます。 +多くの stream ベースのサービスはこのように行われます。 +.Dq wait +エントリを使う stream ベースのサーバは、 +サービスのソケットを監視し、少なくとも一つの接続要求を受け入れてから +終了しなければなりません。 +そういったサーバは通常、時間切れとなるまで、入って来る要求を +受け付け処理します。 +TCPMUX サービスは +.Dq nowait +を使わなければなりません。 +.Pp +``nowait'' サービスの子プロセス(あるいは ``スレッド'')の最大数は、 +``nowait'' キーワードの後に ``/'' と数字を付け加えることで指定できます。 +通常(あるいはゼロが指定された場合)、子プロセスの数に制限はありません。 +一方、最大数に達すると、それ以降の接続要求は、存在する子プロセスが終了するまで +待ち行列に蓄えられます。これは、``wait'' モードでも同様ですが、通常は +1 (デフォルトの値)以外は意味がありません。 +.Pp +.Em user +エントリには、サーバを実行するユーザ名を書きます。 +これによりサーバを root よりも低い権限で実行できます。 +.Pp +.Em サーバプログラム名 +のエントリには、ソケットに要求があったとき +.Nm +が起動し、当該エントリのサービスを提供する +サーバプログラムのパス名を指定します。 +.Nm +内にすでに実装されているサービスを提供する場合には、サーバプログラムとして +.Dq internal +を指定します。 +.Pp +.Em サーバプログラム引数 +のエントリは、サーバを起動する際の引数を、サーバプログラムの起動文字列 +である argv[0] を含めて記述します。 +.Nm +内に実装されているサービスを提供する場合には、サーバプログラム引数 +として +.Dq internal +を指定します。 +.Pp +.Nm +は、内蔵ルーチンを用いて簡単なサービスを自身で提供します。 +これらのサービスとは +.Dq echo , +.Dq discard , +.Dq chargen +(文字生成), +.Dq daytime +(人間が読む形式で時間を出力します), +.Dq time +(機械可読形式の時間。1900 年 1 月 1 日 0 時からの経過秒数を出力します) +です。 +これらのサービスは TCP と UDP バージョンのいずれでも利用できます。 +UDP バージョンは返事のポートとして内部サービスに相当するポートを +要求されたとき、サービスを拒否します。 +(これはループ攻撃に対する防護です。リモート IP アドレスは記録されます。) +これらのサービスの詳細については適当な +.Tn RFC +ドキュメントを参照して下さい。 +.Pp +.Fl l +オプションが指定された場合、 +.Nm +は、 +.Xr accept 2 +が終了した時点で、選択されたサービスと要求を発したリモートの IP 番号を +syslog に記録します。 +.Pp +.Dv SIGHUP +を受けとると、 +.Nm +は、設定ファイルを再度読み込みます。設定ファイルを +再読み込みするとき、サービスを追加、削除、変更できます。 +デバッグモードで起動された場合をのぞき、 +.Nm +は再設定を容易にするために、プロセス ID を +.Pa /var/run/inetd.pid +に記録します。 +.Sh TCPMUX +.Pp +.Tn RFC 1078 +は TCPMUX プロトコルについて述べています。 +「 TCP クライアントは他のホストに TCP ポート番号 1 で接続します。 +クライアントは、サービス名に<CRLF>を付加して送ります。 +サービス名は大文字/小文字を区別しません。 +サーバは、肯定(+)もしくは否定(\-)を表す一文字を返します。 ++ あるいは \- のすぐ後にメッセージが続く場合があります。 +返答は <CRLF> で終わります。もし返答が肯定で +あれば、選択されたプロトコルが開始されます。 +そうでなければ接続は切られます。」 +プログラムにはファイルディスクプリタ 0 と 1 で TCP コネクションが +渡されます。 +.Pp +TCPMUX サービス名が ``+'' で始まっているとき、 +.Nm +は、プログラムに肯定返答(+)を返します。 +これによって、 +特別なサーバコードを追加することなく +標準入出力を使うプログラムを起動することができます。 +.Pp +特別なサービス名である +.Dq help +により、 +.Nm +は +.Pa inetd.conf +にある TCPMUX サービスの一覧を出力します。 +.Sh 関連ファイル +.Bl -tag -width /var/run/inetd.pid -compact +.It Pa /etc/inetd.conf +設定ファイル +.It Pa /etc/rpc +サービス名を RPC プログラム番号に変換するテーブル +.It Pa /etc/services +サービス名をポート番号に変換するテーブル +.It Pa /var/run/inetd.pid +現在実行中の +.Nm +の pid +.El +.Sh 使用例 +.Pp +次に、いくつかのサービスについて +サービスエントリの +例を挙げておきます。 +.Bd -literal +ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l +ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd +tcpmux/+date stream tcp nowait guest /bin/date date +tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook +rstatd/1-3 dgram rpc/udp wait root /usr/libexec/rpc.rstatd rpc.rstatd +.Ed +.Sh エラーメッセージ +.Nm +サーバは、 +.Xr syslog 3 +を使ってエラーメッセージを記録します。 +重要なエラーメッセージと +その説明は以下の通りです。 +.Pp +.Bl -ohang -compact +.It Xo +.Ar service Ns / Ns Ar protocol +.No " server failing (looping), service terminated." +.Xc +直前の一分間に、そのサービスについての要求数が制限に達しました。 +不完全なプログラムや悪意のあるユーザがシステムを +ハングアップさせないために、このような制限が設けられています。 +このメッセージが出力される理由はいくつかあります。 +.Bl -enum -offset indent +.It +短時間の間に多くのホストがこのサービスを要求している。 +.It +不完全なクライアントプログラムがサービスを +頻繁に要求しすぎている。 +.It +悪意あるユーザがあるプログラムを起動し、 +サービスが '拒否' されるように攻撃している。 +.It +起動されたサービスプログラムにエラーがあり、 +クライアントがすぐにリトライを起こしてしまう。 +.El +.Pp +.Fl R Ar rate +オプションを使うと、制限を変えることができます。 +制限に達したとき、10 分経つとサービスは自動的に +再許可されます。 +.Pp +.It Xo +.Ar service Ns / Ns Ar protocol : +.No \&No such user +.Ar user , +.No service ignored +.Xc +.It Xo +.Ar service Ns / Ns Ar protocol : +.No getpwnam : +.Ar user : +.No \&No such user +.Xc +.Xr passwd 5 +データベースに +.Ar user +のエントリーがありません。 +最初のメッセージは +.Nm +が設定ファイルを(再度)読み込むときに出されます。 +二つ目のメッセージは、サービスが呼び出されたときに +出されます。 +.Pp +.It Xo +.Ar service : +.No can't set uid +.Ar uid +.Xc +.It Xo +.Ar service : +.No can't set gid +.Ar gid +.Xc +.Ar user +フィールドのユーザ ID もしくは グループ IDが +無効です。 +.Pp +.It "setsockopt(SO_PRIVSTATE): Operation not supported" +.Nm +はそのソケットに設定されている特権状態を放棄しようとしましたが、 +失敗しました。 +.El +.Sh 関連項目 +.Xr passwd 5 , +.Xr rpc 5 , +.Xr services 5 , +.Xr comsat 8 , +.Xr fingerd 8 , +.Xr ftpd 8 , +.Xr portmap 8 , +.Xr rexecd 8 , +.Xr rlogind 8 , +.Xr rshd 8 , +.Xr telnetd 8 , +.Xr tftpd 8 , +.Sh 歴史 +.Nm +コマンドは +.Bx 4.3 +から登場しました。 +TCPMUX は Mark Lottor によるコードとドキュメントを元にしています。 +.Tn "ONC RPC" +ベースのサービスのサポートは、 +.Tn SunOS +4.1 +が供給されてから、 +それにならって作られました。 |
