Product SiteDocumentation Site

9.6. inetd スーパーサーバ

inetd (通常「インターネットスーパーサーバ」と呼ばれます) はサーバのサーバです。inetd は要求に応じてまれに使われるサーバを実行します。そうすれば、まれにしか使われないサーバを常に実行しておく必要がなくなります。
/etc/inetd.conf ファイルには、要求に応じて起動するサーバとサーバの使うポート番号が書かれています。inetd コマンドはここで書かれたすべてのポートをリッスンします。さらに、inetd はポートに対する接続を検出したら、対応するサーバプログラムを実行します。
/etc/inetd.conf ファイルの有効な各行は (空白で区切られた) 7 つのフィールドで 1 つのサーバを表現します。各フィールドの意味は以下の通りです。
最も一般的な場合、以下の例のようになります。

例 9.1 /etc/inetd.conf からの抜粋

talk   dgram  udp wait    nobody.tty /usr/sbin/in.talkd in.talkd
finger stream tcp nowait  nobody     /usr/sbin/tcpd     in.fingerd
ident  stream tcp nowait  nobody     /usr/sbin/identd   identd -i
/etc/inetd.conf ファイルの中では tcpd プログラムを使うことが多いです。tcpd プログラムを使うと、アクセス制御ルールを適用して到着する接続を制限することが可能です。アクセス制御ルールは hosts_access(5) マニュアルページで説明されており、/etc/hosts.allow/etc/hosts.deny ファイルの中で設定されます。tcpd は接続を確認し、認証が済んだら実際のサーバを実行します (以下の例では in.fingerd を実行しています)。tcpd はそれが実行された時の名前 (1 番目の引数 argv[0]) を頼りに実際に実行するプログラムを識別します。この点に注意してください。そのため、引数リストは tcpd で始めるのではなく、ラップされなければいけないプログラムの名前で始めるべきです。