我一直在尝试更新权限,以便可以运行命令(特别是dotnet restore
)。我不确定这个问题是否特定于运行dotnet
,还是更普遍。
我可以使用 运行该命令sudo dotnet restore
,但是我希望能够在不使用 的情况下运行该命令sudo
。这是因为我想通过 CI 工具(Jenkins)执行这些命令,并且我不希望该工具访问 root 命令。。Jenkins 用户无法运行dotnet restore
(因为出现以下错误)或sudo dotnet restore
(因为没有 root 权限)。
当我跑步时没有 sudo
,我收到以下错误dotnet restore
:
/usr/share/dotnet/sdk/2.1.104/NuGet.targets(104,5): error : Access to the path '/{file_path_to_project.csproj}/obj' is denied.
[{file_path_to_project.csproj}]
/usr/share/dotnet/sdk/2.1.104/NuGet.targets(104,5): error : Permission denied [{file_path_to_project.csproj}]
我一直在尝试更新用户对文件/usr/share/dotnet/sdk/2.1.104/NuGet.targets
和{file_path_to_project.csproj}
目录的读写权限,但到目前为止我仍然收到相同的错误。这与目录有关吗/obj
? – 当我运行时,ls
文件obj
未显示。
我如何更新权限以便无需运行即可访问这些文件sudo
?
我创建了一个/etc/sudoers.d/dotnet
文件来查看它是否可以dotnet
在无需调用的情况下运行sudo
。我添加了以下内容: 。但是,这仍然需要我先{myusername} {myhostname} = (root) NOPASSWD: /usr/bin/dotnet
运行才能获得正确的输出。sudo
dotnet restore
答案1
一种可能性是使用mono
而不是dotnet
。它是 .NET 框架的开源实现,不需要 root 权限即可运行。它支持几乎所有 .NET 4.7 功能(请参阅https://www.mono-project.com/docs/about-mono/compatibility/例外情况)。