bind起動時のwarning対応( Could not open '/var/run/named/named.pid')

bindのchroot化をした後、syslogを見ると起動時にいくつかアクセスできないファイルが存在していることがわかったため、その対応についてメモ

以下はこちらのエントリの続き
http://jsapachehtml.hatenablog.com/entry/2014/02/09/125839

bindは起動したものの、syslogを見ると以下のようなwarningが出ていた

 ubuntu named[2974]: Could not open '/var/run/named/named.pid'.
 ubuntu named[2974]: Please check file and directory permissions or reconfigure the filename.
 ubuntu named[2974]: could not open file '/var/run/named/named.pid': Permission denied
 ubuntu named[2974]: generating session key for dynamic DNS
 ubuntu named[2974]: Could not open '/var/run/named/session.key'.
 ubuntu named[2974]: Please check file and directory permissions or reconfigure the filename.
 ubuntu named[2974]: could not open file '/var/run/named/session.key': Permission denied
 ubuntu named[2974]: could not create /var/run/named/session.key
 ubuntu named[2974]: failed to generate session key for dynamic DNS: permission denied
 ubuntu named[2974]: could not open entropy source /dev/random: permission denied
 ubuntu named[2974]: using pre-chroot entropy source /dev/random

まずはディレクトリのアクセス権限を確認

$ ls -l /var/chroot/bind/var/run/
drwxrwxr-x 2 bind bind 4096 Feb  9 11:24 named
$  ls -l /var/chroot/bind/dev
crw-rw-rw- 1 bind bind 1, 3 Feb  5 18:21 null
crw-r--r-- 1 bind bind 1, 8 Feb  9 11:18 random

どちらもbindユーザが書き込めるようになっている

次にapparmorの設定を確認

# vim /etc/apparmor.d/local/usr.sbin.named
/var/chroot/bind/etc/bind/** r,
/var/chroot/bind/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so rm,

chroot後の/var/runに対する書き込み、/devに対する読み込みが許可されていない

chroot前の設定と同様の状態にするため
・/etc/apparmor.d/usr.sbin.named
・/etc/apparmor.d/abstractions/base
から関係しそうな設定を探してchroot後のディレクトリ用に追記

# vim /etc/apparmor.d/local/usr.sbin.named
/var/chroot/bind/etc/bind/** r,
/var/chroot/bind/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so rm,
# 以下追記部分
/var/chroot/bind/var/cache/bind/ rw,
/var/chroot/bind/var/cache/bind/** rw,
/var/chroot/bind/var/lib/bind/ rw,
/var/chroot/bind/var/lib/bind/** rw,
/var/chroot/bind/var/log/named/ rw,
/var/chroot/bind/var/log/named/** rw,
/var/chroot/bind/var/run/named/named.options r,
/var/chroot/bind/var/run/named/named.pid w,
/var/chroot/bind/var/run/named/session.key w,
/var/chroot/bind/dev/log w,
/var/chroot/bind/dev/null rw,
/var/chroot/bind/dev/random r,

apparmorの設定再読みこみ

$ service apparmor reload

これでbindを再起動してみるとwarningがでなくなった

プロのための Linuxシステム構築・運用技術 (Software Design plus)

プロのための Linuxシステム構築・運用技術 (Software Design plus)