LoginSignup
3
4

More than 5 years have passed since last update.

[解決]/etc/suodersにサービス再起動用アカウントを追加したけど、上手くいかなかった話

Last updated at Posted at 2015-09-29

#[解決]/etc/suodersにサービス再起動アカウントを追加したけど、上手くいかなかった話
ぐぐれ先生に聞いたのですが、日本語での解説がなかったので書いてみました。

環境:CentOS-7

rootではないユーザーに、サービス再起動権限をあげようと思って、visudoして以下の行を追加しました。

visudo
someone  ALL=(root)      NOPASSWD:/usr/bin/systemctl restart postfix.service

しかし、上手くいきません。。。

shell
$ sudo -u someone systemctl restart postfix.service

で、こんなエラーが出ます。

/var/log/message
Sep 29 12:06:08 web01 dbus-daemon: dbus[599]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.55036" (uid=997 pid=10229 comm="/usr/bin/systemctl restart postfix.service ") interface="org.freedesktop.systemd1.
Manager" member="RestartUnit" error name="(unset)" requested_reply="0" destination="org.freedesktop.systemd1" (uid=0 pid=1 comm="/usr/lib/systemd/systemd --switched-root --system ")
Sep 29 12:06:08 web01 dbus[599]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.55036" (uid=997 pid=10229 comm="/usr/bin/systemctl restart postfix.service ") interface="org.freedesktop.systemd1.Manager" memb
er="RestartUnit" error name="(unset)" requested_reply="0" destination="org.freedesktop.systemd1" (uid=0 pid=1 comm="/usr/lib/systemd/systemd --switched-root --system ")

あれこれ visudo してみましたが、どうもそこじゃなさそう。
以下のページを発見

how to allow vncserver restart ??
http://permalink.gmane.org/gmane.comp.freedesktop.dbus/15722

これをみると、system bus(dbus) のセキュリティポリシーにマッチしてないのでエラーがでるそうだ。

/etc/dbus-1/system.d/org.freedesktop.systemd1.conf
を見てみると、

/etc/dbus-1/system.d/org.freedesktop.systemd1.conf
        <policy context="default">
                <deny send_destination="org.freedesktop.systemd1"/>

以下の項目には確かに、

Get
GetAll
GetUnit
GetUnitByPID
LoadUnit
GetJob
ListUnits
ListUnitFiles
GetUnitFileState
ListJobs
Subscribe
Unsubscribe
Dump
GetDefaultTarget

はあるけど、StartUnit,RestartUnit,StopUnitはなかった。
restartだけさせたいので以下を追加(自動的に再読み込みされます)

/etc/dbus-1/system.d/org.freedesktop.systemd1.conf
                <allow send_destination="org.freedesktop.systemd1"
                       send_interface="org.freedesktop.systemd1.Manager"
                       send_member="RestartUnit"/>

再起動できるようになりました。

/var/log/message
Sep 29 12:43:13 web01 dbus-daemon: dbus[599]: [system] Reloaded configuration
Sep 29 12:43:13 web01 dbus[599]: [system] Reloaded configuration
Sep 29 12:43:25 web01 systemd: Starting Postfix Mail Transport Agent...
Sep 29 12:43:26 web01 systemd: Started Postfix Mail Transport Agent.
3
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4