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