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

相关内容