Dela via


Förhöjd åtkomst för dotnet-kommandon

Metodtips för programvaruutveckling hjälper utvecklare att skriva programvara som kräver minst behörighet. Vissa program, till exempel verktyg för prestandaövervakning, kräver dock administratörsbehörighet på grund av operativsystemregler. Följande vägledning beskriver scenarier som stöds för att skriva sådan programvara med .NET Core.

Följande kommandon kan köras förhöjda:

  • dotnet tool kommandon, till exempel installation av dotnet-verktyget.
  • dotnet run --no-build
  • dotnet-core-uninstall

Vi rekommenderar inte att du kör andra kommandon som är upphöjda. I synnerhet rekommenderar vi inte utökade kommandon som använder MSBuild, till exempel dotnet restore, dotnet build och dotnet run. Det primära problemet är problem med behörighetshantering när en användare övergår fram och tillbaka mellan roten och ett begränsat konto efter att ha utfärdat dotnet-kommandon. Som begränsad användare kanske du inte har åtkomst till filen som skapats av en rotanvändare. Det finns sätt att lösa den här situationen, men de är onödiga att komma in i från början.

Du kan köra kommandon som rot så länge du inte övergår fram och tillbaka mellan roten och ett begränsat konto. Docker-containrar körs till exempel som rot som standard, så de har den här egenskapen.

Installation av globalt verktyg

Följande instruktioner visar det rekommenderade sättet att installera, köra och avinstallera .NET-verktyg som kräver utökade behörigheter för att köra.

Installera verktyget

Om mappen %ProgramFiles%\dotnet-tools redan finns gör du följande för att kontrollera om gruppen "Användare" har behörighet att skriva eller ändra katalogen:

  • Högerklicka på %ProgramFiles%\dotnet-tools mappen och välj Egenskaper. Dialogrutan Vanliga egenskaper öppnas.
  • Välj fliken Säkerhet . Under Grupp- eller användarnamn kontrollerar du om gruppen "Användare" har behörighet att skriva eller ändra katalogen.
  • Om gruppen "Användare" inte kan skriva eller ändra katalogen använder du ett annat katalognamn när du installerar verktygen i stället för dotnet-tools.

Installera verktyg genom att köra följande kommando i upphöjd prompt. Mappen dotnet-tools skapas under installationen.

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

Kör det globala verktyget

Alternativ 1 Använd den fullständiga sökvägen med upphöjd fråga:

"%ProgramFiles%\dotnet-tools\TOOLCOMMAND"

Alternativ 2 Lägg till den nyligen skapade mappen i %Path%. Du behöver bara utföra den här åtgärden en gång.

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

Och kör med:

TOOLCOMMAND

Avinstallera det globala verktyget

I en upphöjd prompt skriver du följande kommando:

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

Lokala verktyg

Lokala verktyg är begränsade per underkatalogträd, per användare. När körningen är förhöjd delar lokala verktyg en begränsad användarmiljö till den upphöjda miljön. I Linux och macOS resulterar detta i att filer ställs in med åtkomst endast för rotanvändare. Om användaren växlar tillbaka till ett begränsat konto kan användaren inte längre komma åt eller skriva till filerna. Därför rekommenderas inte installation av verktyg som kräver utökade privilegier som lokala verktyg. Använd i stället alternativet --tool-path och de tidigare riktlinjerna för globala verktyg.

Utökade privilegier under utveckling

Under utvecklingen kan du behöva förhöjd åtkomst för att testa ditt program. Det här scenariot är vanligt för till exempel IoT-appar. Vi rekommenderar att du skapar programmet utan utökade privilegier och sedan kör det med utökade privilegier. Det finns några mönster, enligt följande:

  • Använda genererad körbar fil (det ger bästa startprestanda):

    dotnet build
    sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME
    
  • Använd kommandot dotnet run med —no-build flaggan för att undvika att generera nya binärfiler:

    dotnet build
    sudo dotnet run --no-build
    

Se även