我的服务器日志有几个这样的条目:
leapseconds file /etc/ntp.leapseconds: Permission denied
[1195225.016830] type=1400 audit(1420833186.419:25): apparmor="DENIED" operation="open" profile="/usr/sbin/ntpd" name="/etc/ntp.leapseconds" pid=28627 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
我一直在尝试设置 leapseconds 文件(显然如此),但 ntp 在服务重启时给出了这些错误。ntp.leapseconds 上的文件权限足够(644,我也尝试过授予完全权限)。我在 Ubuntu 14.04 上。
知道为什么会发生这种情况以及如何解决它吗?
答案1
我不知道 NTP 是否应该访问该文件,/etc/ntp.leapseconds
但我可以告诉你为什么会遇到这个问题。
LSM apparmor 正在拒绝读取。
如果您认为 NTP 应该有权访问该文件,那么正确的解决方案是更新 ntp 的 apparmor 配置文件。
sudo vim /etc/apparmor.d/usr.sbin.ntpd
添加一行允许对相关文件进行读访问,例如。
/etc/ntp.leapseconds r,
保存文件然后重新加载 NTP 配置文件
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.ntpd
为什么会发生这种情况?
NTP 具有监听网络套接字的功能,并且具有相当可预测的行为,因此 ubuntu 通常会为其发送一个 apparmor 配置文件并默认将其打开。
Apparmor 是一个 LSM(Linux 安全模块),它是一个额外的安全层,称为 MAC(强制访问控制),它是一种通过策略告诉应用程序可以访问和不能访问的内容的方式。它对访问权限拥有最终决定权,即使您 chmod 777 文件,如果策略说您无权访问该文件,内核也会拒绝访问。
您可以开始学习这里