システムサービスとして実行したい.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
?