特定のユーザーのみ systemctl によるサービスの状態操作を許可したい


今、作成したウェブアプリケーションを、 systemd の `.service`
ファイルでサービス化し、かつそのアプリケーション用のユーザーを作成し、そのユーザーにてサービス(サーバー)を実行しています。

この状態で、このアプリケーションユーザーでログインしていた際には、そこから自身のサービスの状態の更新を行えるようにしたくなりました。`sudo`
がこのユーザに付与されていれば、`sudo systemctl start/stop/etc... app.service`
を実行して、そのアプリのサービスの状態を更新できますが、アプリのユーザーに `sudo` はできれば付与したくありません。

# 質問

systemd のあるサービスを、特定のユーザーから実行された場合は、それが root でなくても `systemctl`
での状態更新を利用可能にしたいです。これは、実現する手段はあるのでしょうか?




`sudoers.d/app-user-systemctl` の中に、以下のように記載を行い、明示的にどのコマンドが sudo
可能かを列挙するのが、ちょうどよい設定方法なのではないか、と思うにいたりました。

[code]

    app-user ALL=(root) /bin/systemctl restart app-service, /bin/systemctl start app-service, /bin/systemctl stop app-service
    
[/code]




`sudo` を使う方法だと `systemctl` コマンドすべてを実行できてしまうので "特定サービスの操作だけ"
許可したい場合に不都合だから使いたくない…なんだろうと理解しました。

* * *

"systemctl user service"
で検索すればやりたいことに該当しそうなページがいくつかヒットしますが、そのうちの一つとして、`/etc/systemd/`
以下ではなく、実行させたいユーザーのホームディレクトリ以下にユニットファイルを`~/.config/systemd/user/*.service`
の形式で配置する方法があるようです。

**参考:**  
[systemdでユーザー固有のunitを動かす](https://kernhack.hatenablog.com/entry/2016/05/05/114633)

>
> systemdは~/.config/systemd/userにserviceファイルを置くことで、そのユーザー用のinit時の処理を動かすことができるんですね。基本的に使い方は通常と同じで、唯一違うのは
> --userをパラメータとして使用すること。
[code]

>     $ cat ~/.config/systemd/user/foobar.service
>     [Unit]
>     Description=User's service file
>  
>     [Service]
>     Type=oneshot
>     ExecStart=/usr/bin/touch /tmp/test.txt
>     RemainAfterExit=yes
>  
>     [Install]
>     WantedBy=default.target
>  
[/code]

> このように実行します。
[code]

>     $ systemctl --user enable foobar
>  
[/code]

