Я пытался обновить полномочия так, чтобы я мог выполнить команду (specificially dotnet restore
). Я не уверен, характерен ли этот вопрос для выполнения dotnet
, или если это более универсально.
Я могу выполнить использование команды sudo dotnet restore
, однако я хочу смочь выполнить эту команду без sudo
. Это вызвано тем, что я хочу выполнить эти команды через инструмент CI (Jenkins), и я не хочу, чтобы тот инструмент имел доступ к корневым командам.. Пользователь Jenkins не может работать dotnet restore
(из-за ошибок ниже) или sudo dotnet restore
(потому что это не имеет корневого доступа).
Когда я работаю без 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
?
Я создал a /etc/sudoers.d/dotnet
файл, чтобы видеть, разрешило ли это dotnet
быть выполненным, не будучи должен звонить sudo
. Я добавил следующее содержание: {myusername} {myhostname} = (root) NOPASSWD: /usr/bin/dotnet
. Однако это все еще потребовало, чтобы я работал sudo
прежде dotnet restore
получить корректный вывод.
Одна возможность состоит в том, чтобы использовать mono
вместо dotnet
. Это - реализация с открытым исходным кодом платформы.NET и не требует корневого разрешения работать. Это поддерживает почти всю.NET 4,7 функции (см. https://www.mono-project.com/docs/about-mono/compatibility/для исключений).