Partilhar via


Acesso elevado para comandos dotnet

As práticas recomendadas de desenvolvimento de software orientam os desenvolvedores a escrever software que requer 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 elevados:

Não recomendamos a execução de outros comandos elevados. Em particular, não recomendamos elevação com comandos que usam MSBuild, como dotnet restore, dotnet build e dotnet run. O principal problema são os problemas de gerenciamento de permissões quando um usuário faz a transição entre uma conta raiz e uma conta restrita depois de emitir comandos dotnet. Você pode achar como um usuário restrito que você não tem acesso ao arquivo criado por um usuário root. Existem maneiras de resolver essa situação, mas elas são desnecessárias para entrar em primeiro lugar.

Você pode executar comandos como root, desde que não faça a transição entre root e uma conta restrita. Por exemplo, os contêineres do Docker são executados como root por padrão, portanto, eles têm essa característica.

Instalação global da ferramenta

As instruções a seguir demonstram a maneira recomendada de instalar, executar e desinstalar ferramentas .NET que exigem permissões elevadas para serem executadas.

Instale 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 escrever 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 escrever ou modificar o diretório.
  • Se o grupo "Usuários" não puder escrever ou modificar o diretório, use um nome de diretório diferente ao instalar as ferramentas em vez de dotnet-tools.

Para instalar ferramentas, execute o seguinte comando no prompt elevado. 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 ao %Path%. Você só precisa fazer essa operação uma vez.

setx Path "%Path%;%ProgramFiles%\dotnet-tools\"

E corra com:

TOOLCOMMAND

Desinstale a ferramenta global

Em um prompt elevado, 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órios, por usuário. Quando executadas elevadas, as ferramentas locais compartilham um ambiente de usuário restrito ao ambiente elevado. No Linux e macOS, isso resulta em arquivos sendo definidos com acesso somente ao usuário root. Se o usuário voltar para uma conta restrita, ele não poderá mais acessar ou gravar nos arquivos. Portanto, a instalação de ferramentas que exigem elevação como ferramentas locais não é recomendada. Em vez disso, use a --tool-path opção e as diretrizes anteriores para ferramentas globais.

Elevação durante o desenvolvimento

Durante o desenvolvimento, você pode precisar de acesso elevado para testar seu aplicativo. Esse cenário é comum para aplicativos IoT, por exemplo. Recomendamos que você crie o aplicativo sem elevação e, em seguida, execute-o com elevação. Existem alguns padrões, como se segue:

  • Usando executável gerado (fornece o melhor desempenho de inicialização):

    dotnet build
    sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME
    
  • Usando o comando dotnet run com o —no-build sinalizador para evitar a geração de novos binários:

    dotnet build
    sudo dotnet run --no-build
    

Consulte também