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 から、ログファイルへのアクセスができるようになるはずだ。

| コメントは受け付けていません。 | tech