使用Terraform创建A记录时出现Bind9权限错误求助
问题场景
Bind9域名服务器运行正常,但用Terraform自动化创建A记录时触发权限错误,journal -xe里的日志如下:
Jul 05 19:28:10 Bind9DNS named[2051]: client @0x7f34300e4170 X.X.X.X#64718/key terraformkey: updating zone 'example.com/IN': adding an RR at 'www.example.com' A X.X.X.X
Jul 05 19:28:10 Bind9DNS named[2051]: /etc/bind/zones/forward.example.com.jnl: create: permission denied
Jul 05 19:28:10 Bind9DNS named[2051]: client @0x7f34300e4170 X.X.X.X#64718/key terraformkey: updating zone 'example.com/IN': error: journal open failed: unexpected error
Jul 05 19:28:10 Bind9DNS named[2051]: client @0x7f34300e4170 X.X.X.X#64719: update 'example.com/IN' denied
问题根源
Bind9动态更新区域时会自动生成.jnl后缀的journal文件记录变更,但named进程没有权限在/etc/bind/zones/目录下创建这个文件,直接导致更新失败。
解决步骤
确认Bind9运行用户
先查清楚named进程所属的用户:ps aux | grep named大部分系统默认是
bind或named用户。调整目录权限
给/etc/bind/zones/目录设置正确的所有者和权限:sudo chown -R bind:bind /etc/bind/zones/ sudo chmod -R 750 /etc/bind/zones/要是你的
named用户是named,把命令里的bind换成named就行。处理SELinux(如果开启的话)
系统开了SELinux的话,得把目录的SELinux上下文恢复默认:sudo restorecon -Rv /etc/bind/zones/这条命令能让
named进程正常读写该目录。重启Bind9服务
改完权限后重启服务生效:sudo systemctl restart named验证更新
重新跑Terraform的变更命令,确认A记录能正常创建:terraform apply
内容的提问来源于stack exchange,提问作者Anthony

