systemd でアプリをサービスとして実行しようとすると、権限が拒否されるというエラーが発生する

systemd でアプリをサービスとして実行しようとすると、権限が拒否されるというエラーが発生する

Ubuntu で権限のないユーザーによってアプリをサービスとして実行したいです。ユーザーを作成するコマンドは次のとおりです。

sudo groupadd -r mygroup
sudo useradd -r -s /bin/false -g mygroup myuser
sudo chown -R mygroup:myuser /path/to/my/app

以下は私のサービス ファイルです。

[Unit]
Description=Myapp server
After=syslog.target
After=network.target

[Service]
WorkingDirectory=/path/to/my/app
ExecStart=/usr/bin/java -jar /path/to/my/app/myapp.jar
User=myuser
Type=simple
StandardOutput=syslog
StandardError=syslog
SuccessExitStatus=143
TimeoutStopSec=120
Restart=always

[Install]
WantedBy=multi-user.target

ただし、サービスを開始すると、ログに次のエラーが表示されます。

Changing to the requested working directory failed: Permission denied
Failed at step CHDIR spawning /usr/bin/java: Permission denied

ユーザーを sudo グループに追加しsudo usermod -aG sudo myuser、ExecStart に sudo を追加しようとしましたが、どちらも機能しません。

Changing to the requested working directory failed: Permission denied
Failed at step CHDIR spawning sudo: Permission denied

答え1

chown の概要は次のとおりです。

chown [OPTION]... [OWNER][:[GROUP]] FILE...

引数として mygroup:myuser を指定していますが、これは逆です。以下を使用してください。

sudo chown -R myuser:mygroup /path/to/my/app

関連情報