Lezen in het Engels

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 algemene hulpprogramma installeren

Pakketassets moeten worden geïnstalleerd op een beveiligde locatie met behulp van de --tool-path optie. Deze scheiding voorkomt het delen van een beperkte gebruikersomgeving met een verhoogde omgeving.

Bash
sudo dotnet tool install PACKAGEID --tool-path /usr/local/share/dotnet-tools

/usr/local/share/dotnet-tools wordt gemaakt met toestemming drwxr-xr-x. Als de map al bestaat, gebruikt u de ls -l opdracht om te controleren of de beperkte gebruiker niet gemachtigd is om de map te bewerken. Als dat het zo is, gebruikt u de sudo chmod o-w -R /usr/share/dotnet-tools opdracht om de toegang te verwijderen.

Het globale hulpprogramma uitvoeren

Optie 1 Gebruik het volledige pad met sudo:

Bash
sudo /usr/local/share/dotnet-tools/TOOLCOMMAND

Optie 2 Voeg de symboolkoppeling van het hulpprogramma toe, eenmaal per hulpmiddel:

Bash
sudo ln -s /usr/local/share/dotnet-tools/TOOLCOMMAND /usr/local/bin/TOOLCOMMAND

En voer uit met:

Bash
sudo TOOLCOMMAND

Het algemene hulpprogramma verwijderen

Bash
sudo dotnet tool uninstall PACKAGEID --tool-path /usr/local/share/dotnet-tools

Als u een symboolkoppeling hebt gemaakt, moet u deze ook verwijderen:

Bash
sudo rm /usr/local/bin/TOOLCOMMAND

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):

    .NET CLI
    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:

    .NET CLI
    dotnet build
    sudo dotnet run --no-build
    

Zie ook