解决办法

将文件“/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”中写入区域文件。

BIND - 名称服务器错误“工作目录不可写”
日期:2020-06-02 22:18:23 来源:oir作者:oir