Systemd は、サービスを実行するために app.service で指定されたユーザーを使用しません。何が間違っている可能性がありますか?

Systemd は、サービスを実行するために app.service で指定されたユーザーを使用しません。何が間違っている可能性がありますか?

システムサービスとして実行したい.Net Core 3アプリケーションがあります。

[Unit]
Description=app-prod

[Service]
WorkingDirectory=/var/www/app-prod
ExecStart=/usr/bin/dotnet /var/www/app-prod/app
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-app-prod
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

私が使用しているサービス構成に見られるように、User=www-dataアプリケーションパスに対する権限はすでにそのユーザーが所有しています。ただし、サービスを開始するとフォルダを確認してフォルダを作成しようとしますが、例外が発生します。

mar 07 14:15:14 void dotnet-app-prod[8004]: System.UnauthorizedAccessException: Access to the path '/var/www/.
mar 07 14:15:14 void dotnet-app-prod[8004]:  ---> System.IO.IOException: Permission denied
mar 07 14:15:14 void dotnet-app-prod[8004]:    --- End of inner exception stack trace ---
mar 07 14:15:14 void dotnet-app-prod[8004]:    at System.IO.FileSystem.CreateDirectory(String fullPath)

ご覧のとおり、サービスの実行に使用されるユーザーは、voidその環境にログインしている一般ユーザーです。

必要なサービスの代わりに間違ったユーザーにサービスを実行させるには、何が間違っている可能性がありますかwww-data

ベストアンサー1

おすすめ記事