9.1.2. 間接起動型サービス


9.1.2. 間接起動型サービス

直接起動型サービスは、応答性の向上と引換えに、リソースを犠牲にしています。では、逆の場合はどうなるのでしょうか。つまり、必要な時のみ呼び出されるサービスです。この場合、メリットとデメリットは当然ながら反転し、リソースの消費はサービスが呼び出されている時のみに抑えられるというメリットは得られるものの、起動時の応答性が若干低下します。このようなサービスのことを間接機動型サービスと呼びます。規模の大きなサービスを間接機動させるとパフォーマンスの低下に直結するため、通常は小さなサービスに対して用いられています。間接機動型サービスのために、接続を監視するスーパーサーバというものが用意されており、古くはinetdが、現在ではxinetdが用いられています。

xinetdは、1つの設定ファイル(/etc/xinetd.conf)と、複数のファイルをおさめた一つのディレクトリ(/etc/xinetd.d)を利用します。全体の設定はxinetd.confに、そして各サービスの設定は/etc/xinetd.d以下の対応するファイルに記載します。以下はswatサーバに対応する/etc/xinetd.d/swatというファイルの一例です。

# cat /etc/xinetd.d/swat

# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
# to configure your Samba server. To use SWAT, \
# connect to port 901 with your favorite web browser.
service swat
{
disable = yes
port = 901
socket_type = stream
wait = no
only_from = 191.168.2.0/24
user = root
server = /usr/sbin/swat
log_on_failure += USERID
}

各種設定は“{・・・}”の中の部分に書かれており、特に“disable”に対する値が重要となります。これは「無効にしますか?」という設定なので、それに対するyesは「無効にする」という意味になります。つまり不要なサービスであれば、“/etc/xinetd.d/”以下の対応するファイルのdisable行を“yes”とすることで停止させることができます。なお、現在のxinetd経由の各サービスの起動状態は、chkconfigコマンドによる出力の後半に記載されます。最近のディストリビューションではセキュリティを意識してか、多くのサービスは標準設定では起動しないようになっていますが、それでも起動してしまうサービスもあります。そのような(間接機動型の)サービスを停止させるには、上述のように“/etc/xinetd.d”以下の設定ファイルを直接書き換えればいいのですが、chkconfigコマンドを用いても同様の処理を行うことができます。上記のように直接起動型と同様に設定することで、対応する/etc/xinetd.d以下のファイルに“disable = yes”という行が自動的に追加されます。

# /sbin/chkconfig swat off

# chkconfig --list
…...............
xinetd ベースのサービス:
chargen-dgram: off
chargen-stream: off
cvs: off
daytime-dgram: off
swat: off
…...............

なお、設定終了後はxinetdサービスを再起動させておきましょう。設定が実際に反映されるのは、xinetdサービスを起動した時のみだからです。

# /etc/init.d/xinetd restart

資料をダウンロード