2015年4月15日水曜日

ntp.conf をシンボリックリンクにすると Apparmor により ntpd が ntp.conf にアクセスできなくなる

Ubuntu で /etc/ntp.conf をシンボリックリンクにすると Apparmor により ntpd が ntp.conf にアクセスできなってしまうので、なんとかアクセスできるようにしてみました。

環境
Ubuntu 14.04 (Trusty Tahr) Server

ntp をインストール

$ sudo apt-get install ntp

/etc/ntp.conf をシンボリックリンクにしてみます。

$ sudo mkdir -p /some/where
$ sudo mv /etc/ntp.conf /some/where/
$ sudo ln -s /some/where/ntp.conf /etc/
$ ls -la /etc/ntp.conf
lrwxrwxrwx 1 root root 20 Apr 14 12:37 /etc/ntp.conf -> /some/where/ntp.conf

ntp.conf がシンボリックリンクになった状態で ntp サービスを再起動すると /var/log/syslog に以下のログが出ました。ntp サービスもまともに動いていないようです。

Apr 14 12:40:33 Apparmor kernel: [77955.181823] type=1400 audit(1428982833.051:17): apparmor="DENIED" operation="open" profile="/usr/sbin/ntpd" name="/some/where/ntp.conf" pid=2800 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0

ログの内容からして、どうやら ntp サービスのプロセス (/usr/sbin/ntpd) が /some/where/ntp.conf にアクセスすることを apparmor が拒否しているようです。

apparmor の設定で /etc/ntp.conf は読み取り許可としてるようですが、もちろん デフォルトでは /some/where/ntp.conf は読み取り許可となっていません。

$ grep 'ntp\.conf' /etc/apparmor.d/usr.sbin.ntpd
  /etc/ntp.conf r,
  /etc/ntp.conf.dhcp r,
  /var/lib/ntp/ntp.conf.dhcp r,

/some/where/ntp.conf を読み取り許可となるように設定するのですが、 /etc/apparmor.d/usr.sbin.ntpd の中身の最後の方に以下の記載がありました。

$ tail -n 3 /etc/apparmor.d/usr.sbin.ntpd
  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.sbin.ntpd>
}

カスタマイズしたい場合は /etc/apparmor.d/local/usr.sbin.ntpd に設定を書くと良いようです。

$ cat /etc/apparmor.d/local/usr.sbin.ntpd
# Site-specific additions and overrides for usr.sbin.ntpd.
# For more details, please see /etc/apparmor.d/local/README.

/some/where/ntp.conf r,

apparmor を再起動しました。

$ sudo service apparmor restart

最後に ntp サービスを再起動すると時刻補正できるようになりました。


0 件のコメント:

コメントを投稿