![在 chroot 中运行 BIND9](https://linux22.com/image/486823/%E5%9C%A8%20chroot%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20BIND9.png)
我正在尝试在 chroot jail 中的 ubuntu 机器上运行 bind9,如“Linux 系统管理”(Adelstein 和 Lubanovic)中所述。命令“sudo /etc/init.d/bind9 start”在 syslog 中生成错误:
Jun 27 13:39:48 doli named[12418]: starting BIND 9.5.1-P2 -u bind -t /var/lib/named
. . .
Jun 27 13:39:48 doli named[12418]: loading configuration from '/etc/bind/named.conf'
Jun 27 13:39:48 doli named[12418]: none:0: open: /etc/bind/named.conf: permission denied
Jun 27 13:39:48 doli named[12418]: loading configuration: permission denied
Jun 27 13:39:48 doli named[12418]: exiting (due to fatal error)
Jun 27 13:39:48 doli kernel: [426157.438173] type=1503 audit(1246124388.753:33): operation="inode_permission" requested_mask="r::" denied_mask="r::" fsuid=105 name="/var/lib/named/etc/bind/named.conf" pid=12419 profile="/usr/sbin/named"
服务器配置如下:
- /etc/bind 符号链接到 /var/lib/named/etc/bind。
- /var/.../etc 及其中的所有内容的所有权均设置为 bind:bind。
- /etc/default/bind9 有 OPTIONS="-u bind -t /var/lib/named" (但我注意到 /etc/init.d/bind9 有 OPTIONS="" 和一个似乎表示不要管它并重置 /etc/default/bind9 中的值的符号)。
系统日志表明问题在于 bind9 的进程所有者无法读取配置文件,但它以 root 身份启动并重置为 bind,我认为这两种方式都应该能够读取配置。
我在这里遗漏了什么?
答案1
编辑:哎呀,是 AppArmor,不是 SELinux...
查看 /etc/apparmor.d/usr.sbin.named
有一个部分如下所示:
/etc/bind/** r,
/var/lib/bind/** rw,
/var/lib/bind/ rw,
/var/cache/bind/** rw,
/var/cache/bind/ rw,
我建议随后添加这个(或者可能用这个替换它):
/var/lib/named/etc/bind/** r,
/var/lib/named/var/lib/bind/** rw,
/var/lib/named/var/lib/bind/ rw,
/var/lib/named/var/cache/bind/** rw,
/var/lib/named/var/cache/bind/ rw,