我需要使用身份验证,但是当我重新启动 ntp 服务时,日志中出现一条错误消息“ntpd[1710]: authreadkeys: file /etc/ntp.keys: Permission denied”
这是我的配置文件:
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server 0.uk.pool.ntp.org iburst
server 1.uk.pool.ntp.org iburst
server 2.uk.pool.ntp.org iburst
server 3.uk.pool.ntp.org iburst
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap
restrict 127.0.0.1
restrict ::1
#enable auth
keys /etc/ntp.keys
trustedkey 17
controlkey 17
requestkey 17
我已确认该文件可读,并已在多个权限(400、600、700、777)下尝试过。
如何让我的服务器读取身份验证密钥?
答案1
我在 19.10 遇到了同样的问题。它/var/log/syslog
像这样显示连续条目...
6月10日 12:34:56 主机名 ntpd[12345]: authreadkeys: 文件‘/etc/ntp.keys’: 权限被拒绝 6月10日 12:34:56 HOSTNAME 内核:[...] 审核:类型=1400 审核(...):apparmor =“DENIED”操作=“open”配置文件=“/usr/sbin/ntpd”名称=“/etc/ntpkey_MD5key_HOSTNAME.1234567890”pid=12345 comm=“ntpd”requested_mask=“r”denied_mask=“r”fsuid=0 ouid=0
查看/etc
AppArmor 中允许ntpd
访问哪些文件...
$ grep /etc/ntp /etc/apparmor.d/usr.sbin.ntpd /etc/ntp.conf r, /etc/ntp.conf.dhcp r, /etc/ntpd.conf r, /etc/ntpd.conf.tmp r, /etc/ntp.keys r, /etc/ntp/** r, /etc/ntp.drift rwl, /etc/ntp.drift.TEMP rwl, /etc/ntp/drift * rwl,
...我可以看到/etc/ntp.keys
并/etc/ntp/**
包含在内。但是,当使用它ntp-keygen
来生成对称密钥时,它会创建ntp.keys
一个指向文件名包括主机名和文件戳...
$ ls -l /etc/ntp* -rw-r--r-- 1 root root 123 六月 10 12:34 /etc/ntp.conf -rw-r----- 1 root root 456 6月10日 12:34 /etc/ntpkey_MD5key_HOSTNAME.1234567890 lrwxrwxrwx 1 root root 33 六月 10 12:34 /etc/ntp.keys -> ntpkey_MD5key_HOSTNAME.1234567890
AppArmor 显然不遵循符号链接在其规则中,所以你要么需要……
- 建立
ntp.keys
硬链接/唯一链接而不是符号链接,或者...... - 将密钥文件移动到
/etc/ntp/
目录内的某个位置,或者...... - 我采取的方法受到以下启发:一条评论关于此问题的重复帖子。我创建了一个
/etc/apparmor.d/local/usr.sbin.ntpd
包含此内容的文件.../etc/ntpkey_MD5key_HOSTNAME.1234567890 r,
...然后指示 AppArmor重新加载个人资料为了ntpd
...sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.ntpd
...重新启动后ntpd
...sudo 服务 ntp 重启
...它成功加载密钥文件。
答案2
我启动了一个 Ubuntu 14.04 实例,并注意到在日志中相同的“权限被拒绝”消息之后出现了一个应用程序保护消息。
禁用 apparmor 的 ntp 配置文件可解决该问题。