Delen via


Verhoogde toegang voor dotnet-opdrachten

Aanbevolen procedures voor softwareontwikkeling helpen ontwikkelaars bij het schrijven van software waarvoor het minimale aantal bevoegdheden is vereist. Voor sommige software, zoals hulpprogramma's voor prestatiebewaking, is echter beheerdersmachtiging vereist vanwege besturingssysteemregels. In de volgende richtlijnen worden ondersteunde scenario's beschreven voor het schrijven van dergelijke software met .NET Core.

De volgende opdrachten kunnen worden uitgevoerd met verhoogde bevoegdheden:

  • dotnet tool opdrachten, zoals dotnet tool install.
  • dotnet run --no-build
  • dotnet-core-uninstall

Het is niet raadzaam om andere opdrachten uit te voeren met verhoogde bevoegdheid. In het bijzonder raden we geen uitbreiding aan met opdrachten die MSBuild gebruiken, zoals dotnet-herstel, dotnet-build en dotnet-uitvoering. Het belangrijkste probleem is problemen met machtigingsbeheer wanneer een gebruiker heen en weer overgaat tussen de hoofdmap en een beperkt account nadat dotnet-opdrachten zijn uitgegeven. Mogelijk vindt u een beperkte gebruiker die u geen toegang hebt tot het bestand dat is gebouwd door een hoofdgebruiker. Er zijn manieren om deze situatie op te lossen, maar ze zijn niet nodig om in de eerste plaats aan de slag te gaan.

U kunt opdrachten uitvoeren als root zolang u niet heen en weer gaat tussen de hoofdmap en een beperkt account. Docker-containers worden bijvoorbeeld standaard uitgevoerd als root, zodat ze dit kenmerk hebben.

Installatie van globale hulpprogramma's

De volgende instructies laten zien hoe u .NET-hulpprogramma's kunt installeren, uitvoeren en verwijderen waarvoor verhoogde machtigingen zijn vereist om uit te voeren.

Het hulpprogramma installeren

Als de map %ProgramFiles%\dotnet-tools al bestaat, gaat u als volgt te werk om te controleren of de groep 'Gebruikers' gemachtigd is om die map te schrijven of te wijzigen:

  • Klik met de rechtermuisknop op de %ProgramFiles%\dotnet-tools map en selecteer Eigenschappen. Het dialoogvenster Algemene eigenschappen wordt geopend.
  • Selecteer het tabblad Beveiliging . Controleer onder Groeps- of gebruikersnamen of de groep Gebruikers machtigingen heeft om de directory te schrijven of te wijzigen.
  • Als de groep Gebruikers de map niet kan schrijven of wijzigen, gebruikt u een andere mapnaam bij het installeren van de hulpprogramma's in plaats van dotnet-tools.

Als u hulpprogramma's wilt installeren, voert u de volgende opdracht uit in de opdrachtprompt met verhoogde bevoegdheid. Tijdens de installatie wordt de map dotnet-tools gemaakt.

dotnet tool install PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools".

Het globale hulpprogramma uitvoeren

Optie 1 Gebruik het volledige pad met verhoogde prompt:

"%ProgramFiles%\dotnet-tools\TOOLCOMMAND"

Optie 2 Voeg de zojuist gemaakte map toe aan %Path%. U hoeft deze bewerking slechts één keer uit te voeren.

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

En voer uit met:

TOOLCOMMAND

Het algemene hulpprogramma verwijderen

Typ in een prompt met verhoogde bevoegdheid de volgende opdracht:

dotnet tool uninstall PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools"

Lokale hulpprogramma's

Lokale hulpprogramma's hebben een bereik per submapstructuur, per gebruiker. Wanneer u verhoogde bevoegdheden uitvoert, delen lokale hulpprogramma's een beperkte gebruikersomgeving met de verhoogde omgeving. In Linux en macOS resulteert dit in bestanden die alleen toegang hebben tot de hoofdgebruiker. Als de gebruiker terugschakelt naar een beperkt account, kan de gebruiker geen toegang meer krijgen tot of schrijven naar de bestanden. Het is dus niet raadzaam om hulpprogramma's te installeren waarvoor benodigde bevoegdheden zijn vereist, omdat lokale hulpprogramma's niet worden aanbevolen. Gebruik in plaats daarvan de --tool-path optie en de vorige richtlijnen voor globale hulpprogramma's.

Uitbreiding tijdens ontwikkeling

Tijdens de ontwikkeling hebt u mogelijk verhoogde toegang nodig om uw toepassing te testen. Dit scenario is bijvoorbeeld gebruikelijk voor IoT-apps. U wordt aangeraden de toepassing zonder benodigde bevoegdheden te bouwen en deze vervolgens uit te voeren met uitbreiding. Er zijn een aantal patronen, als volgt:

  • Gegenereerd uitvoerbaar bestand gebruiken (dit biedt de beste opstartprestaties):

    dotnet build
    sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME
    
  • Gebruik de opdracht dotnet run met de —no-build vlag om te voorkomen dat nieuwe binaire bestanden worden gegenereerd:

    dotnet build
    sudo dotnet run --no-build
    

Zie ook