Openntpd 无法在 ubuntu 16.04 上启动

Openntpd 无法在 ubuntu 16.04 上启动

在 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

如果您喜欢使用apparmorwith 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

相关内容