首页 > 解决方案 > 服务权限被拒绝 - Fedora 31

问题描述

我目前正在开发一个使用本指南运行 .net 代码的网站:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-3.1

以及本安装 .net core SDK 的指南(我在故障排除时安装了 2.1 和 3.1):

https://docs.microsoft.com/en-ca/dotnet/core/install/linux-package-manager-fedora31

我正在尝试配置 apache 代理服务器以向 Kestrel 服务器发送请求,但我在 /etc/systemd/system/kestrel-helloapp.service 的服务存在问题。

我的服务代码是:

[Unit]
Description=Started service

[Service]
WorkingDirectory=/var/www/html/PublishedVersion
ExecStart=/usr/share/dotnet /var/www/html/PublishedVersion/Website.dll
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root
Enviroment=ASPNETCORE_ENVIROMENT=Production

[Install]
WantedBy=multi-user.target

服务状态为:

Mar 15 19:37:38 localhost.localdomain systemd[1]: Started service
Mar 15 19:37:38 localhost.localdomain systemd[1706]: kestrel-helloapp.service: Failed to execute command: Permission denied
Mar 15 19:37:38 localhost.localdomain systemd[1706]: kestrel-helloapp.service: Failed at step EXEC spawning /usr/share/dotnet: Permission denied
Mar 15 19:37:38 localhost.localdomain systemd[1]: kestrel-helloapp.service: Main process exited, code=exited, status=203/EXEC
Mar 15 19:37:38 localhost.localdomain systemd[1]: kestrel-helloapp.service: Failed with result 'exit-code'.

与指南代码相比,我的服务代码有三个主要区别:

第一:我已经删除了自动重启,所以它不会让我的机器陷入困境。

第二:我已将 更改ExecStart=/usr/local/dotnetExectStart=/usr/shared/dotnet,我这样做是因为我的 .net 安装不在那个位置,因为某些原因让我无法理解。

第三:我已更改为User=apache尝试User=root进行故障排除,我机器上的唯一用户是root,因为这台机器仅用于学校目的。

我还将我机器上的 SELinux 设置更改为允许并最终禁用以尝试进行故障排除。

我还是新手,在课堂上没有看到这些,所以放轻松。

感谢您的时间/答案。

标签: asp.net-mvcapachefedoraweb-development-serverkestrel-http-server

解决方案


Systemd 对执行文件的位置有限制。我不是该领域的专家,但有解决此问题的方法。您可以编辑/etc/selinux/config和更改行:

SELINUX=enforcingSELINUX=permissive,

然后重新启动系统,systemd 的服务将启动。


推荐阅读