bind9 でログの書き出し先を変更する
Ubuntu Server で bind9 のログの書き出し先を変えたくて、/etc/bind/named.conf.options に、以下の設定を投入しました。
logging {
channel b_log {
file "/var/log/bind9/bind.log" versions 30 size 1m;
print-time yes;
print-category yes;
print-severity yes;
severity info;
};
channel b_debug {
file "/var/log/bind9/debug.log" versions 2 size 1m;
print-time yes;
print-category yes;
print-severity yes;
severity dynamic;
};
channel b_query {
file "/var/log/bind9/query.log" versions 2 size 1m;
print-time yes;
severity info;
};
category default { b_log; b_debug; };
category config { b_log; b_debug; };
category queries { b_query; };
};
しかし、/var/log/message に以下のようなログを残して、一向に bind9 のロギングが行われません。 実際は一行です。
May * **:**:** gw kernel: [*.*] type=**** audit(*.*:*):
operation="open" pid=***** parent=1 profile="/usr/sbin/named"
requested_mask="w::" denied_mask="w::" fsuid=*** ouid=***
name="/var/log/bind9/bind.log"
で、調べると、AppArmor という、Linux のセキュリティモデルが有効になっているのが原因の模様。これは、アプリケーション毎のプロファイルで、アプリケーションがアクセスできるリソースを制限する機能らしい。Ubuntu 9.10 では、デフォルトで有効になっている。
結局、 /etc/apparmor.d/usr.sbin.named を見てみると、当然 /var/log/bind9 に対するアクセスは許可されていなかった。あらかじめ設定されているログ関係の許可設定は /var/log/named というディレクトリに対してのみだった。
で、とりあえず、以下の設定を追加する。
/var/log/bind9/** rw,
/var/log/bind9/ rw,
追加したら、/etc/init.d/apparmor reload を実行することで設定を反映させる。これで bind9 から、ログファイルへのアクセスができるようになるはずだ。