Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As práticas recomendadas de desenvolvimento de software orientam os desenvolvedores a escrever softwares que exigem a menor quantidade de privilégios. No entanto, alguns softwares, como ferramentas de monitoramento de desempenho, exigem permissão de administrador devido às regras do sistema operacional. As diretrizes a seguir descrevem cenários com suporte para escrever esse software com o .NET Core.
Os seguintes comandos podem ser executados com privilégios elevados:
- comandos
dotnet tool
, como instalação de ferramenta dotnet. dotnet run --no-build
dotnet-core-uninstall
Não recomendamos a execução de outros comandos elevados. Em especial, não recomendamos elevação com comandos que usam o MSBuild, como dotnet restore, dotnet build e dotnet run. O principal problema são os problemas no gerenciamento de permissões quando um usuário alterna entre as contas: root e restrita após emitir comandos dotnet. Você, como um usuário restrito, pode descobrir que não tem acesso ao arquivo criado por um usuário raiz. Existem maneiras de resolver esta situação, mas não é necessário entrar nesse assunto agora.
É possível executar comandos como raiz, desde que não faça a transição entre a raiz e uma conta restrita. Por exemplo, os contêineres do Docker são executados como raiz por padrão, portanto, eles têm essa característica.
Instalação de ferramenta global
As instruções a seguir demonstram a maneira recomendada de instalar, executar e desinstalar ferramentas do .NET que exigem permissões elevadas para execução.
Instalar a ferramenta
Se a pasta %ProgramFiles%\dotnet-tools
já existir, faça o seguinte para verificar se o grupo "Usuários" tem permissão para gravar ou modificar esse diretório:
- Clique com o botão direito do mouse na
%ProgramFiles%\dotnet-tools
pasta e selecione Propriedades. A caixa de diálogo Propriedades Comuns é aberta. - Selecione a guia Segurança . Em Nomes de grupo ou de usuário, verifique se o grupo "Usuários" tem permissão para gravar ou modificar o diretório.
- Se o grupo "Usuários" não puder gravar ou modificar o diretório, use um nome de diretório diferente ao instalar as ferramentas em vez de dotnet-tools.
Para instalar as ferramentas, execute o seguinte comando no prompt com privilégios elevados. Ele criará a pasta dotnet-tools durante a instalação.
dotnet tool install PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools".
Executar a ferramenta global
Opção 1 Use o caminho completo com prompt elevado:
"%ProgramFiles%\dotnet-tools\TOOLCOMMAND"
Opção 2 Adicione a pasta recém-criada a %Path%
. Você só precisa fazer essa operação uma vez.
setx Path "%Path%;%ProgramFiles%\dotnet-tools\"
E execute com:
TOOLCOMMAND
Desinstalar a ferramenta global
No prompt de privilégios elevados, digite o seguinte comando:
dotnet tool uninstall PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools"
Ferramentas locais
As ferramentas locais têm escopo por árvore de subdiretório, por usuário. Quando executadas com privilégios elevados, as ferramentas locais compartilham um ambiente de usuário restrito com o ambiente com privilégios elevados. No Linux e no macOS, isso faz com que os arquivos sejam definidos com acesso somente ao usuário raiz. Se o usuário voltar para uma conta restrita, o usuário não poderá mais acessar ou gravar nos arquivos. Então, não é recomendado instalar as ferramentas que exigem elevação como ferramentas locais. Em vez disso, use a opção --tool-path
e as diretrizes anteriores para ferramentas globais.
Elevação durante o desenvolvimento
Durante o desenvolvimento, talvez você precise de acesso elevado para testar seu aplicativo. Esse cenário é comum para aplicativos IoT, por exemplo. É recomendável que você compile o aplicativo sem elevação e, em seguida, execute-o com elevação. Há alguns padrões, da seguinte maneira:
Usando executável gerado (ele fornece o melhor desempenho de inicialização):
dotnet build sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME
Usando o comando dotnet run com a
—no-build
flag para evitar a geração de novos binários:dotnet build sudo dotnet run --no-build