昨天,我在我的一台服务器上安装了 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)。
named
我上次的努力表明,如果手动操作,BIND 能够在用户帐户下运行并正常启动:
[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
我应该使用什么类型和尺寸的枪支来解决这个问题?我更喜欢自动弹药的枪支,最差的情况下,它应该能放在我的肩膀上。当然,我愿意接受建议。
答案1
在基于 Redhat 的系统(很可能是其他系统)中,/etc/sysconfig/named 可以定义 ROOTDIR=/var/named/chroot,其作用正如您所想。bind-chroot 包仅在 /var/named/chroot 下设置目录结构。如果在那里定义了 ROOTDIR 并且未安装 bind-chroot,我预计会看到该错误。
-戴夫
答案2
想发布这个以防其他人遇到同样的问题:
禁用 SELinux 后始终立即重新启动,而不是等待一天。
BIND 现在可以顺利启动了。我现在哭着入睡了。