Share via


Erhöhte Zugriffsrechte für dotnet-Befehle

Durch Best Practices in der Softwareentwicklung schreiben Entwickler Software, für die die geringsten Berechtigungen erforderlich sind. Einige Software, wie z.B. Tools zur Leistungsüberwachung, benötigen jedoch aufgrund von Betriebssystemregeln Administratorrechte. Die folgende Anleitung beschreibt unterstützte Szenarien für das Schreiben derartiger Software mit .NET Core.

Die folgenden Befehle können mit erhöhten Rechten ausgeführt werden:

Wir empfehlen nicht, andere Befehle mit erhöhten Rechten auszuführen. Insbesondere empfehlen wir keine Erhöhung der Rechte mit Befehlen, die MSBuild verwenden, wie z.B. dotnet restore, dotnet build und dotnet run. Das Hauptproblem ist die Berechtigungsverwaltung, wenn ein Benutzer nach der Ausgabe von dotnet-Befehlen zwischen einem Root- und einem eingeschränkten Konto hin und her wechselt. Sie stellen als eingeschränkter Benutzer möglicherweise fest, dass Sie keinen Zugriff auf die von einem Root-Benutzer erstellte Datei haben. Es gibt Möglichkeiten, diese Situation zu lösen, aber sie sind zunächst unnötig.

Sie können Befehle als Root-Benutzer ausführen, solange Sie nicht zwischen dem Stammkonto und einem eingeschränkten Konto hin und her wechseln. Beispielsweise werden Dockercontainer standardmäßig als Root ausgeführt, daher haben sie dieses Merkmal.

Installation des globalen Tools

Die folgenden Anweisungen zeigen die empfohlene Vorgehensweise bei der Installation, Ausführung und Deinstallation von.NET-Tools, die erhöhte Berechtigungen für die Ausführung erfordern.

Installieren des Tools

Wenn der Ordner %ProgramFiles%\dotnet-tools bereits vorhanden ist, überprüfen Sie anhand der folgenden Schritte, ob die Gruppe „Benutzer“ die Berechtigung hat, dieses Verzeichnis zu schreiben oder zu ändern:

  • Klicken Sie mit der rechten Maustaste auf den Ordner %ProgramFiles%\dotnet-tools, und wählen Sie Eigenschaften aus. Das Dialogfeld Allgemeine Eigenschaften wird geöffnet.
  • Wählen Sie die Registerkarte Sicherheit aus. Überprüfen Sie unter Gruppen- oder Benutzernamen, ob die Gruppe „Benutzer“ die Berechtigung hat, in dieses Verzeichnis zu schreiben oder es zu ändern.
  • Wenn die Gruppe „Benutzer“ das Verzeichnis nicht schreiben oder ändern kann, verwenden Sie bei der Installation der Tools einen anderen Verzeichnisnamen als dotnet-tools.

Führen Sie den folgenden Befehl in einer Eingabeaufforderung mit erhöhten Rechten aus, um Tools zu installieren. Damit wird während der Installation der Ordner dotnet-tools erstellt.

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

Ausführen des globalen Tools

Option 1 Verwenden des vollständigen Pfads in einer Eingabeaufforderung mit erhöhten Rechten:

"%ProgramFiles%\dotnet-tools\TOOLCOMMAND"

Option 2 Hinzufügen des neu erstellten Ordners zu %Path%. Dieser Vorgang ist nur einmalig erforderlich.

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

Und ausführen mit:

TOOLCOMMAND

Deinstallieren des globalen Tools

Geben Sie in der Eingabeaufforderung mit erhöhten Rechten folgenden Befehl ein:

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

Lokale Tools

Lokale Tools werden pro Unterverzeichnisstruktur und Benutzer definiert. Wenn die lokalen Tools mit erhöhten Rechten ausgeführt werden, verwenden sie eine eingeschränkte Benutzerumgebung zusammen mit der Umgebung mit erhöhten Rechten. In Linux und MacOS führt dies dazu, dass auf Dateien nur mit Root-Benutzerzugriff zugegriffen werden kann. Wenn der Benutzer zu einem eingeschränkten Konto zurückkehrt, kann der Benutzer nicht mehr auf die Dateien zugreifen oder in diese schreiben. Daher wird die Installation von Tools, die höhere Rechte als lokale Tools erfordern, nicht empfohlen. Verwenden Sie stattdessen die Option --tool-path und die vorherigen Richtlinien für globale Tools.

Erhöhung der Rechte während der Entwicklung

Während der Entwicklung benötigen Sie möglicherweise erhöhte Zugriffsrechte, um Ihre Anwendung zu testen. Dieses Szenario ist z.B. bei IoT-Apps üblich. Wir empfehlen Ihnen, die Anwendung ohne Erhöhung der Rechte zu erstellen und sie dann mit erhöhten Rechten auszuführen. Es gibt einige Muster, wie z.B.:

  • Verwenden generierter ausführbaren Dateien (die bietet die beste Leistung beim Start):

    dotnet build
    sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME
    
  • Verwenden des Befehls dotnet run mit dem Flag —no-build, um das Generieren neuer Binärdateien zu vermeiden:

    dotnet build
    sudo dotnet run --no-build
    

Siehe auch