解决办法
将文件“/etc/mtree/BIND.chroot.dist” 从
/set type=dir uname=root gname=wheel mode=0755 . dev mode=0555 .. etc namedb dynamic uname=bind .. master .. slave uname=bind .. .. ..
(注意以下带有 #<<< 的行)
修改为
/set type=dir uname=bind gname=wheel mode=0755 #<<< . dev mode=0555 .. etc namedb dynamic uname=bind .. master uname=bind #<<< .. slave uname=bind .. working uname=bind #<<< .. #<<< .. ..
由于这是一个只读文件,请使用命令“:w!”强制 vi 保存然后用 ":q" 命令退出 vi。
请记住更改以下文件和文件夹的所有权:
/var/named
修改为
bind:bind
然后重新启动“named”服务。
这一次,它不会将所有权恢复为“root:wheel”
问题
为了修复DNS服务器漏洞。
在 FreeBSD 机器上升级或者安装 ISC Bind DNS 服务器 9.6 后,我们需要停止并启动“named”服务。
像往常一样,运行以下命令将重新启动它:
/etc/rc.d/named stop /etc/rc.d/named start
在服务重启的过程中,弹出几行文字说“/var/named”中的某些目录的权限被改变了。
默认情况下,命名文件需要是“绑定”的所有者和组才能正常运行。
但是“/etc/rc.d/named”中的脚本似乎将某些目录所有权更改为“root”,将组所有权更改为“wheel”。
这实际上会导致日志文件中报告一些错误:
Sep 3 02:44:26 nameserver named[9999]: the working directory is not writable
自然,我们会执行命令:
chown -R bind:bind /var/name/etc
解决权限问题。
但是在使用命令再次重新启动“命名”服务之后:
/etc/rc.d/named restart
权限恢复为“root”和“wheel”。
当 DNS 服务器从主 DNS 服务器传输区域文件时,这会导致问题。
“named”服务将无法将最新的区域信息写入目录“/var/named”中的文件,然后它会创建一些临时文件。
经过一番调查,似乎“/etc/mtree/BIND.chroot.dist”中的所有权定义是这样设置的。
我们需要重新定义目录的所有权,以便在“命名”服务启动时停止将目录所有权更改回“root”,以便运行 DNS 服务器的“named”服务所有者、“绑定”用户将能够在“/var/named”中写入区域文件。