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

/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 (or NO).

次に、設定ファイル inetd.conf の一部を掲げます。

#       @(#)inetd.conf  5.4 (Berkeley) 6/30/90
#
ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l
telnet  stream  tcp     nowait  root    /usr/libexec/telnetd    telnetd
shell   stream  tcp     nowait  root    /usr/libexec/rshd       rshd
login   stream  tcp     nowait  root    /usr/libexec/rlogind    rlogind
finger  stream  tcp     nowait/3/10 nobody /usr/libexec/fingerd fingerd -s

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



Noriyo Kanayama