BSD界隈四方山話

第6回 サービス管理の要/etc/rc.confと/etc/rc.conf.d/,単一ファイルと分割ファイル

この記事を読むのに必要な時間:およそ 4 分

/etc/rc.confの利点と欠点

なにごとにも利点と欠点があるように,/etc/rc.confの方法にも双方の面があります。まず利点を見てみましょう。/etc/rc.confには次のような利点があります。

  • このファイルだけでシステム設定の多くを知ることができる
  • 人間にとって扱いやすい

これに対して次のような欠点があります。

  • 設定内容が膨れあがってくると把握も管理も面倒になってくる
  • ソフトウェアにとって扱いにくい

/etc/rc.conf.d/*および/usr/local/etc/rc.conf.d/*というのは,こうした欠点に応えるために仕組みです。

分割配置のための/etc/rc.conf.d/と/usr/local/etc/rc.conf.d/

/etc/rc.conf.d/*と/usr/local/etc/rc.conf.d/*はこれまで/etc/rc.confファイルにまとめていた設定を,それぞれ個別の設定に分割できるというものです。たとえば,sshd(8)とnginx(8)の設定を個別に分離すると,次のようにファイルを分けることになります。

リスト2 /etc/rc.conf.d/sshd

sshd_enable="YES"
sshd_flags="-oUsePAM=no -oChallengeResponseAuthentication=no -oUseDNS=no"

リスト3 /usr/local/etc/rc.conf.d/nginx

nginx_enable="YES"

/etc/rc.confの設定のほうが優先されますので,試す場合には/etc/rc.confからは設定を削除しておいてください。

この方法はChefやPuppetのような管理ツール,またはFreeBSDをベースにして開発されるソフトウェアアプライアンスなどと相性の良い方法です。サービスの有効化や無効化,またはその設定などを個別のファイルとして作成するだけでよいからです。

/etc/rc.confをそのまま使う方法だと,ソフトウェアを使って/etc/rc.confファイルを編集しなければなりません。これはソフトウェアにとってはあまり使いやすい方法ではないわけです。ソフトウェアアプライアンスではあとからサードパーティ製のソフトウェアを追加したり,プラグインやアドオンを追加できるようにするものがあります。/etc/rc.confの場合,このファイルを編集する必要がありますが(rc.conf.localを使うと言った別の方法もあります)⁠/usr/local/etc/rc.conf.d/にファイルを置く,またはファイルを置き換えるだけで良いので,ソフトウェアにとっては管理が簡単です。

設定ファイルを単一のファイルにまとめるか,個別のファイルに分割するか,好みの問題もあります(単一ファイルだとファイル削除などの危険性が高いとして好まないユーザもいます)⁠どちらの方法も提供されていますので,要望に応じて使ってみてください。