近日在安装了 DNS 服务器的主机上, Log 看到 BIND 不能轮替记录档的错误, 具体错误讯息如下:
Aug 27 03:57:53 dns named[8954]: unable to rename log file ‘/var/log/named.log’ to ‘/var/log/named.log.0’: permission denied
由于想方便管理, 我在 BIND 设定了 Log 记录档放在 /var/log/named.log, 而不是使用 BIND 默认的 /var/named/chroot/var/log/, 判段应该是 BIND 不能对 /var/log/ 目录写入的权限问题所致, 以下提供两个解决方法:
1. 在 /var/log/ 开一个新目录给 BIND, 将 BIND 的记录档都放在新目录内, 以及设定权限:
# mkdir /var/log/named
# chown named.named /var/log/named
# chown named.named /var/log/named
接着开启 named.conf, 重新设定记录档位置:
# vi /etc/named.conf
找到 logging 的段落, 里面的 file 指定了记录档位置, 将记录档指定到新目录, 例如改成:
|
1 |
file "/var/log/named/named.log" versions 3 size 50m; |
然后重新启动 BIND 便完成了:
# systemctl restart named
2. 另一个方法是, 将 BIND 的记录档重新指回 BIND 的默认目录, 开启 named.conf, 重新设定记录档位置:
# vi /etc/named.conf
找到 logging 的段落, 将记录档指回 BIND 的默认目录, 例如改成:
|
1 |
file "/var/named/chroot/var/log/named.log" versions 3 size 50m; |
然后重新启动 BIND:
# systemctl restart named
最后在 /var/log/named 用 ln 指令建立 softlink 指向 /var/named/chroot/var/log/:
# ln -s /var/named/chroot/var/log/ /var/log/named