BIND 权限错误

BIND 权限错误

我一直在尝试使用 nsupdate 来动态更新我的名称服务器记录。

当我尝试时,我收到服务器失败信息。这是来自系统日志的。

Nov 12 08:00:53 ps133045 named[14314]: client 78.72.53.42#50135: signer "www.mydomain.com" approved
Nov 12 08:00:53 ps133045 named[14314]: client 78.72.53.42#50135: updating zone 'mydomain.com/IN': adding an RR at 'client$
Nov 12 08:00:53 ps133045 named[14314]: /etc/bind/zones/mydomain.com.zone.jnl: create: permission denied
Nov 12 08:00:53 ps133045 named[14314]: client 78.72.53.42#50135: updating zone 'mydomain.com/IN': error: journal open fai$

所以我认为这是权限问题,为了测试,我给了 /var/named 和 /etc/bind chmod 666

没有帮助,所以我创建了 mydomain.com.zone.jnl 文件并对其进行 chmod 600 并认为这样可以,我也执行了 chown bind:bind 和 root:bind,但在两种情况下仍然出现相同的错误。

现在我甚至无法重新启动绑定,因为这个错误

Nov 12 08:40:10 ps133045 named[21169]: loading configuration from '/etc/bind/named.conf'
Nov 12 08:40:10 ps133045 named[21169]: /etc/bind/named.conf.local:9: open: /var/named/dnskeys.conf: permission denied
Nov 12 08:40:10 ps133045 named[21169]: loading configuration: permission denied
Nov 12 08:40:10 ps133045 named[21169]: exiting (due to fatal error)

我真的不明白这些权限错误,在这两种情况下,我都尝试对文件使用 chmod 666 并 chown bind:bind 或 root:bind。但我仍然收到错误。

以下是目录权限

/var/命名

drw-rw-rw-  2 root bind  121 Nov 12 08:53 .
drwxr-xr-x 15 root root 4.0K Nov 11 16:24 ..
-rw-------  1 root root   59 Nov 11 16:48 Kwww.mydomain.com.+157.17183.key
-rw-------  1 root root  165 Nov 11 16:49 Kwww.mydomain.com.+157.17183.private
-rw-------  1 root bind  126 Nov 12 08:53 dnskeys.conf

/etc/bind

drwxrwsrwx   3 root bind 4.0K Nov 11 17:31 .
drwxr-xr-x 115 root root 8.0K Nov 10 04:59 ..
-rw-r--r--   1 root root 2.5K Oct 20 10:46 bind.keys
-rw-r--r--   1 root root  237 Oct 20 10:46 db.0
-rw-r--r--   1 root root  271 Oct 20 10:46 db.127
-rw-r--r--   1 root root  237 Oct 20 10:46 db.255
-rw-r--r--   1 root root  353 Oct 20 10:46 db.empty
-rw-r--r--   1 root root  270 Oct 20 10:46 db.local
-rw-r--r--   1 root root 3.0K Oct 20 10:46 db.root
-r--r--r--   1 root bind    3 Nov 10 05:07 jam.sh
-rw-r--r--   1 root bind  463 Nov 11 05:15 named.conf
-rw-r--r--   1 root bind  490 Oct 20 10:46 named.conf.default-zones
-rwxr-xr-x   1 root bind  503 Nov 12 09:01 named.conf.local
-rwxr-xr-x   1 root bind  462 Nov 11 17:30 named.conf.local.bak
-rw-r--r--   1 root bind  572 Oct 20 10:46 named.conf.options
-rw-r-----   1 bind bind   77 Nov 10 04:59 rndc.key
drw-rwSrw-   2 root bind  109 Nov 12 08:26 zones
-rw-r--r--   1 root root 1.3K Oct 20 10:46 zones.rfc1918

/etc/bind/zones

drw-rwSrw- 2 root bind  109 Nov 12 08:26 .
drwxrwsrwx 3 root bind 4.0K Nov 11 17:31 ..
-r--r--r-- 1 root bind  402 Nov 11 11:07 mydomain.com.zone
-rw-rw-rw- 1 bind bind    0 Nov 12 08:26 mydomain.com.zone.jnl
-r--r--r-- 1 root bind  377 Nov 11 11:06 rev.241.205.33.66.in-addr.arpa

如有任何帮助或指导,我们将不胜感激,提前致谢!

答案1

该错误信息实际上是相当不言自明的:

/etc/bind/named.conf.local:9:打开:/var/named/dnskeys.conf:权限被拒绝

named进程通常以受限用户身份运行(可能是bind),该用户无权访问该文件dnskeys.conf(在当前权限下,该文件只能由用户访问root):

-rw------- 1 root bind 126 Nov 12 08:53 dnskeys.conf

要么改变权限将该文件的权限设置为 640,以便该组bind具有读取权限,

chmod g+r /var/named/dnskeys.conf

或者将文件的所有者更改为运行该named进程的用户:

chown bind /var/named/dnskeys.conf

正如其他人指出的那样,你绝对应该不是使文件可供全世界读取,而不是可供全世界写入。

答案2

在我看来,这似乎是 AppArmor 的问题。尝试暂时将其设置为允许,看看问题是否消失。

默认情况下,Bind/Named 守护进程没有权限到 /etc 中的区域文件。它只能读取它们。因此,nsupdate 进程也无法写入它们。

如果你正在动态更新 DNS,则应将区域文件存储/var/lib/bind本指南

如果 bind 将像 DDNS 一样接收文件的自动更新,则使用/var/lib/bind/db.example.com而不是/etc/bind/db.example.com

Apt 安装程序应该已经使用正确的权限和 AppArmor 上下文创建了该目录。

答案3

除了上面提到的文件系统级别权限之外,您还需要配置 bind 以使用指令允许这些远程更新allow-update

http://www.zytrax.com/books/dns/ch7/xfer.html

相关内容