#[解決]/etc/suodersにサービス再起動アカウントを追加したけど、上手くいかなかった話
ぐぐれ先生に聞いたのですが、日本語での解説がなかったので書いてみました。
環境:CentOS-7
rootではないユーザーに、サービス再起動権限をあげようと思って、visudoして以下の行を追加しました。
someone ALL=(root) NOPASSWD:/usr/bin/systemctl restart postfix.service
しかし、上手くいきません。。。
$ sudo -u someone systemctl restart postfix.service
で、こんなエラーが出ます。
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
を見てみると、
<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だけさせたいので以下を追加(自動的に再読み込みされます)
<allow send_destination="org.freedesktop.systemd1"
send_interface="org.freedesktop.systemd1.Manager"
send_member="RestartUnit"/>
再起動できるようになりました。
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.