Ubuntu运行C# .NET程序提示Permission Denied问题求助
解决Ubuntu 20.04下.NET 8
dotnet run 权限拒绝问题 核心问题分析
报错提示Permission denied,结合你的项目路径和运行环境,主要原因集中在路径特殊字符干扰和外部存储挂载权限限制两点。
1. 移除路径中的特殊字符
你的项目目录名包含#符号(learningC#),在Linux环境中#是shell注释标记,会导致命令解析异常,直接引发路径识别或权限判定错误。
- 重命名项目目录,比如改为
learningCSharp或learningCS - 重新在VS Code中打开项目,依次执行:
dotnet clean dotnet restore dotnet run
2. 修复外部存储的挂载执行权限
项目位于/media/emerson-rexroth/BRYCESTUFF下,这是外部挂载的存储设备,Ubuntu默认挂载外部存储时可能禁用了exec(执行)权限,导致无法运行生成的二进制文件。
- 查看当前挂载选项:
mount | grep BRYCESTUFF - 如果输出中包含
noexec而无exec,先卸载设备再重新挂载并添加执行权限:sudo umount /media/emerson-rexroth/BRYCESTUFF # 替换下方[你的设备名],可通过lsblk命令查看,例如sdb1 sudo mount -o exec /dev/[你的设备名] /media/emerson-rexroth/BRYCESTUFF - 若要永久生效,编辑
/etc/fstab文件,在对应挂载行的选项中添加exec,示例:UUID=xxxxxx /media/emerson-rexroth/BRYCESTUFF ext4 defaults,exec 0 0
3. 临时手动赋予可执行权限
如果上述方法暂时无法操作,可直接给生成的二进制文件添加执行权限:
chmod +x "/media/emerson-rexroth/BRYCESTUFF/code/learningC#/bin/Debug/net8.0/learningC#"
注意用双引号包裹带#的路径,避免shell解析错误,之后再执行dotnet run
内容的提问来源于stack exchange,提问作者emanresu
相关产品推荐
相关产品推荐

