Linux

無法獲取官方 CentOS 5.4 BIND 包啟動

  • August 17, 2010

昨天我在我的一台伺服器上安裝了 CentOS 5.4,由於我無法推斷的原因,官方的 BIND/named 軟體包似乎無法啟動。

這是發生的事情:

   [root@hal init.d]# service named start
   Starting named: 
   Error in named configuration:
   /etc/named.conf:57: open: named.root.hints: permission denied
                                                      [FAILED]

有問題的行,帶有上下文的目錄選項:

   // further up in the file:
       directory "/var/named";
   // line 57:
       include "named.root.hints";

和你一樣,我的第一反應是檢查 /var/named/named.root.hints、/var/named 和 /var 的權限,以確保named使用者能夠讀取它。以下是每個級別的權限:

   drwxr-xr-x 19 root root  4096 Nov  3 02:05 var
   drwxr-x---  5 root named 4096 Nov  3 02:36 named
   -rw-r--r-- 1 named named  524 Mar 29  2006 named.root.hints

在許可方面,一切似乎都很好。如果該/var/named目錄可由指定使用者寫入,則會發生相同的錯誤。我什至暫時允許named使用者通過 bash 登錄,su從 root 到命名,並檢查我是否能夠cat /var/named/named.root.hints成功。(是的,別擔心:我將 shell 改回 nologin)。

我的最後一次嘗試表明 BIND 能夠在named使用者帳戶下執行並且啟動得很好,如果手動這樣做的話:

   [root@hal ~]# named -u named -g
   03-Nov-2009 16:31:02.021 starting BIND 9.3.6-P1-RedHat-9.3.6-4.P1.el5 -u named -g
   03-Nov-2009 16:31:02.021 adjusted limit on open files from 1024 to 1048576
   03-Nov-2009 16:31:02.021 found 2 CPUs, using 2 worker threads
   03-Nov-2009 16:31:02.021 using up to 4096 sockets
   03-Nov-2009 16:31:02.028 loading configuration from '/etc/named.conf'
   03-Nov-2009 16:31:02.030 using default UDP/IPv4 port range: [1024, 65535]
   03-Nov-2009 16:31:02.031 using default UDP/IPv6 port range: [1024, 65535]
   03-Nov-2009 16:31:02.034 listening on IPv4 interface lo, 127.0.0.1#53
   03-Nov-2009 16:31:02.034 listening on IPv4 interface eth0, 10.0.0.5#53
   03-Nov-2009 16:31:02.034 listening on IPv4 interface eth1, ww.xx.yy.zz#53
   03-Nov-2009 16:31:02.040 command channel listening on 127.0.0.1#953
   03-Nov-2009 16:31:02.040 command channel listening on ::1#953
   03-Nov-2009 16:31:02.040 ignoring config file logging statement due to -g option
   03-Nov-2009 16:31:02.041 zone 0.in-addr.arpa/IN/localhost_resolver: loaded serial 42
   03-Nov-2009 16:31:02.042 zone 0.0.127.in-addr.arpa/IN/localhost_resolver: loaded serial 1997022700
   03-Nov-2009 16:31:02.042 zone 255.in-addr.arpa/IN/localhost_resolver: loaded serial 42
   03-Nov-2009 16:31:02.042 zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/localhost_resolver: loaded serial 1997022700
   03-Nov-2009 16:31:02.043 zone localdomain/IN/localhost_resolver: loaded serial 42
   03-Nov-2009 16:31:02.043 zone localhost/IN/localhost_resolver: loaded serial 42
   03-Nov-2009 16:31:02.043 zone x.y.z.in-addr.arpa/IN/internal: loaded serial 1
   03-Nov-2009 16:31:02.044 zone x.y.z/IN/internal: loaded serial 2
   03-Nov-2009 16:31:02.045 running

我應該使用什麼類型和尺寸的槍支來解決這個問題?我更喜歡帶有自動彈藥的東西,最壞的情況是,它應該能夠放在我的肩膀上。我當然願意接受建議。

想發布這個以防其他人有同樣的問題:

始終在禁用 SELinux 後立即重新啟動,而不是等待一天。

BIND 現在啟動沒有問題。我現在哭著睡著了。

在基於 Redhat 的系統(很可能是其他系統)中,/etc/sysconfig/named 可以定義 ROOTDIR=/var/named/chroot 執行您認為的操作。bind-chroot 包只在 /var/named/chroot 下建立目錄結構。如果在那裡定義了 ROOTDIR 並且未安裝 bind-chroot,我希望看到該錯誤。

-戴夫

引用自:https://serverfault.com/questions/81193