在 Ubuntu 16.04.2 x64 上安装 Openntpd 后,我遇到了一个问题(其他版本也会出现这种情况)。我在日志中看到,openntp 服务无法启动:
Apr 14 12:00:00 my-host kernel: [24.6] type=1400 audit(1.2:1): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/ntpd" name="/etc/openntpd/ntpd.conf" pid=1526 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
答案1
为了读者的利益:
问题源于之前安装的软件包ntp
。当ntp
被 替换时openntpd
,它会留下一些配置文件,其中之一是/etc/apparmor.d/usr.sbin.ntpd
。这会阻止openntpd
正常运行。 ntp
通常是默认安装的,因此这种情况通常总是在安装后处于活动状态openntpd
时发生。apparmor
解决方案是:
sudo apt-get purge ntp
sudo /etc/init.d/apparmor reload
sudo /etc/init.d/openntpd restart
如果您喜欢使用apparmor
with openntpd
(您可能已切换到openntpd
更安全的方式,对吗?),以下是我添加的内容/etc/apparmor.d/openntpd
(我不知道这是否完整。到目前为止它在我这边运行良好):
# vim:syntax=apparmor
#include <tunables/global>
/usr/sbin/ntpd {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
/etc/openntpd/ntpd.conf r,
/var/lib/openntpd/run/ntpd.sock rw,
/var/lib/openntpd/db/ntpd.drift rw,
capability sys_time,
capability sys_nice,
capability sys_chroot,
capability setgid,
capability setuid,
capability kill,
}
/etc/apparmor.d/usr.sbin.ntpd
为什么不“修复” openntpd
?
因为ntp
是一个资源怪物。它需要大量的权限,而 并不需要openntpd
。正确的做法是限制openntpd
它需要什么,而不是ntp
需要什么。
顺便说一句:最好的解决方案可能是让 Canonical/etc/apparmor.d/usr.sbin.ntpd
为软件包添加一个适当的内容openntpd
,然后覆盖剩余的配置ntp
。可以将此视为 Ubuntu 16.04 中的一个错误。
答案2
问题出在 apparmor 和 ntpd(而不是 openntpd)上,当安装 openntpd 时,它们删除了默认包 ntpd,但没有删除/编辑 apparmor 规则/etc/apparmor.d/usr.sbin.ntpd
您可以删除规则或通过添加行/etc/openntpd/ntpd.conf r,
并/{,var/}lib/openntpd/run/ntpd.sock rwl,
在行后添加行来修复它/etc/ntp.conf r,
之后重新启动 apparmor 并启动 openntpd。
sudo service apparmor restart
sudo service openntpd start
/etc/apparmor.d/usr.sbin.ntpd
另外,您可以将其添加到站点特定的文件中,而不是直接添加行/etc/apparmor.d/local/usr.sbin.ntpd