next up previous contents
Next: 2.9 ネットワーク管理上のコマンド Up: 2.8 サービス Previous: 2.8.1 /etc/services

2.8.2 /etc/inetd.conf

サービスを提供する場合、通常2つの方法があります。一つは、サーバ・ デーモンを常時動かし特定のポートに結びつけておく方法で、二つめは、 inetd というポートを監視するプログラムに自身を登録し、そのポート にアクセスがあった場合にinetdからサービスプログラムを起動して貰う 方法です。前者は、既にサービスが走っているので素早い対応が可能で すが、あまりアクセスされないサービスならば資源の無駄となります。 こうした場合に用いられるのが後者の方法です。従って、inetd は 利用できるサービスの案内人、スーパーサービスと言っても良いでしょう。 この inetd に監視するポートと、アクセスがあった場合に起動する プログラムを教えるための設定ファイルが /etc/inetd.conf です。 もし、/etc/inetd.conf を書き換えた場合には、inetd に kill -HUP コマンドを使って inetd.conf ファイルの読み直しを 指示しなければなりません(HUPシグナルを送ると言います)。

inetd は非常に便利な仕組みですが、ファイアーウォール上では動かさない 方が良いでしょう。もし、何らかの理由で inetd を利用しなければ ならない場合でも、必要のないサービスはコメントアウトし、動かない ようにしておくべきです(よりセキュリティを高めた xinetd という ものもあります)。

inetd はデフォルトでは(/etc/defaults/rc.conf)、自動的に起動しないように なっています。これを起動しないようにするには、/etc/rc.conf に以下の ように登録をします。
inetd_enable="NO"      # Run the network daemon dispatcher (YES/NO).

次に、設定ファイル inetd.conf の一部を掲げます。
#ftp    stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l
#ftp    stream  tcp6    nowait  root    /usr/libexec/ftpd       ftpd -l
#ssh     stream  tcp     nowait  root    /usr/sbin/sshd          sshd -i -4
#ssh     stream  tcp6    nowait  root    /usr/sbin/sshd          sshd -i -6
#telnet stream  tcp     nowait  root    /usr/libexec/telnetd    telnetd
#telnet stream  tcp6    nowait  root    /usr/libexec/telnetd    telnetd
(この例のように、デフォルトでは全ての設定行が # によってコメントアウト されています。)

各フィールドは前から順に、サービス名,ソケットタイプ,プロトコル, {wait|nowait} [/最大子プロセス数[/IPあたりの分あたりの最大接続数]], ユーザ名[:クループ名][/ログインクラス名],サーバプログラム名, サーバプログラム引数となっています。サービス名は先の /etc/services に記述した公式サービス名を使うのが良いとされています。



Noriyo Kanayama