You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ubuntu/Linux中以管理员权限运行.NET Core应用的问题

解决Ubuntu 22.04上.NET Core 7应用的权限运行问题

我来帮你拆解下你遇到的几个权限问题,并给出对应的解决思路:

1. 直接执行./App提示Permission denied的原因与解决

这是因为你的自包含发布的二进制文件缺少执行权限。Linux系统要求可执行文件必须拥有执行权限才能运行,你后来用chmod 777虽然解决了执行问题,但777权限过于宽松(所有用户都能读写执行),更安全的做法是只给文件所有者添加执行权限:

chmod +x /home/ubuntu/App

2. sudo -E ./App提示command not found的原因与解决

sudo -E会保留当前用户的环境变量,但sudo的默认PATH环境变量和普通用户不同,用相对路径./App会导致系统找不到文件。解决方法是使用绝对路径执行:

sudo -E /home/ubuntu/App

3. 赋予权限后sudo运行仍抛出UnauthorizedAccessException的核心问题

你遇到的这个情况,本质是自包含部署的二进制文件在权限上下文处理上的小坑:即使你用sudo启动,应用内部的文件操作可能没有完全继承root权限,或者目标目录/home/ubuntu/test/本身的权限设置限制了root的访问。

更稳定的解决方案:使用框架依赖模式运行

正如你后续尝试的,上传编译好的.dll文件,用sudo dotnet App.dll运行一切正常——这是因为框架依赖部署模式下,dotnet运行时会正确处理权限上下文,避免自包含二进制文件的权限继承问题。

如果坚持要用自包含部署,你可以试试这两个方法:

  • 调整目标目录的权限,确保root拥有访问权:
    sudo chown root:root /home/ubuntu/test/
    sudo chmod 755 /home/ubuntu/test/
    
  • 切换到root用户后再运行应用,彻底继承root权限:
    sudo su
    /home/ubuntu/App
    

最后提醒下:日常操作尽量避免使用777权限,这会带来不必要的安全风险,给文件和目录设置最小必要权限才是最佳实践。

内容的提问来源于stack exchange,提问作者Andre M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:01:45