我在 Ubuntu 20.04 LTS 上运行 NTP 服务器。服务器运行良好,客户端正确轮询服务器。但当我想记录统计信息时,我总是收到权限错误。
我尝试在 ntp.conf 中包含以下几行:
statistics rawstats
statsdir /var/log/ntpstats/
filegen rawstats file raw type day link enable
当查看时systemctl ntp status
:
mars 05 09:08:48 RD-NTP ntpd[3534] : can't open /var/log/ntpstats/raw.20210305: Permission denied
mars 05 09:08:50 RD-NTP ntpd[3534] : can't open /var/log/ntpstats/raw.20210305: Permission denied
mars 05 09:08:52 RD-NTP ntpd[3534] : can't open /var/log/ntpstats/raw.20210305: Permission denied
mars 05 09:08:54 RD-NTP ntpd[3534] : can't open /var/log/ntpstats/raw.20210305: Permission denied
但对我来说,该目录具有正确的权限ls -al
:
drwxr-xr-x 2 ntp ntp 4096 april 2 2020 .
在选择默认文件夹之前,我尝试使用我创建的文件夹并使用此命令在权限中添加 ntp:,但chmod ntp:ntp /home/ubuntu/ntpstats/
它不起作用,所以我切换到这个,但同样不起作用。
你知道为什么即使 ntp 在文件夹上占了上风,ntpd 仍然会不断出现错误吗?
答案1
导致权限问题的原因很可能不是权限位,而是 AppArmor。Ubuntu ntpd
20.04 ( /etc/apparmor.d/usr.sbin.ntpd
) 上的默认 AppArmor 配置文件包含:
...
/var/log/ntp w,
/var/log/ntp.log w,
/var/log/ntpd w,
/var/log/ntpstats/clockstats* rwl,
/var/log/ntpstats/loopstats* rwl,
/var/log/ntpstats/peerstats* rwl,
/var/log/ntpstats/protostats* rwl,
/var/log/ntpstats/rawstats* rwl,
/var/log/ntpstats/sysstats* rwl,
...
请注意,预期的文件名与ntpd
生成的文件名不匹配。如果您将 AppArmor 配置文件行引用更改rawstats
为:
/var/log/ntpstats/raw* rwl,
并使用 重新加载 AppArmor systemctl reload apparmor
,您的统计记录可能会起作用。
还请注意,loopstats
和peerstats
在诊断 NTP 问题时比更有可能有所帮助rawstats
。(请参阅http://doc.ntp.org/current-stable/monopt.html#types了解更多信息。)就我个人而言,我认为如果您要费心记录原始统计信息,那么您最好捕获线路上的每个 NTP 数据包并使用 wireshark 或类似的协议分析器对其进行处理。
答案2
那么文件本身呢?它已经存在了吗?
尝试这些:
ls -ld /var/log/ntpstats
ls -ld /var/log/ntpstats/raw.20210305
chmod ntp:ntp /home/ubuntu/ntpstats/
小心!
chown变化所有权,而不是权限。
修改模式改变权限。
我建议你需要很好地掌握这两个概念,或者你可以做一个一团糟您的 Linux 机器。