解決 BIND 錯誤: unable to rename log file


近日在安裝了 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

接著開啟 named.conf, 重新設定記錄檔位置:

# vi /etc/named.conf

找到 logging 的段落, 裡面的 file 指定了記錄檔位置, 將記錄檔指定到新目錄, 例如改成:

然後重新啟動 BIND 便完成了:

# systemctl restart named

2. 另一個方法是, 將 BIND 的記錄檔重新指回 BIND 的預設目錄, 開啟 named.conf, 重新設定記錄檔位置:

# vi /etc/named.conf

找到 logging 的段落, 將記錄檔指回 BIND 的預設目錄, 例如改成:

然後重新啟動 BIND:

# systemctl restart named

最後在 /var/log/named 用 ln 指令建立 softlink 指向 /var/named/chroot/var/log/:

# ln -s /var/named/chroot/var/log/ /var/log/named

Leave a Reply