So ermöglichen Sie Benutzern ohne Administratorrechte das Starten und Beenden von Windows-Diensten

Einige praktische Möglichkeiten, Windows-Dienstberechtigungen zu verwalten, ohne zum Megaforce-Administrator zu werden.

Die Verwaltung von Diensten unter Windows kann ganz schön nervig sein. Normalerweise können normale Benutzerkonten aus Sicherheitsgründen keine Systemdienste starten, beenden oder deren Einstellungen ändern. Manchmal muss man aber einem Domänenbenutzer oder einem bestimmten Konto die Berechtigung erteilen, einen Dienst zu bearbeiten – beispielsweise den Druckspooler neu zu starten oder eine benutzerdefinierte Anwendung zu beenden. Das ist zwar nicht unmöglich, aber deutlich komplizierter als die üblichen GUI-Funktionen. In diesem Artikel zeige ich euch verschiedene Möglichkeiten, wie man die Zugriffssperre umgehen kann und wie man einem Benutzer ohne Administratorrechte das Recht zur Verwaltung eines bestimmten Dienstes erteilt.

Am Ende dieses Artikels werden Sie wahrscheinlich eine Methode gefunden haben, mit der Ihre Benutzer einen Dienst neu starten können, ohne dafür volle Administratorrechte zu benötigen – zumindest für diesen speziellen Dienst. Nur zur Warnung: Vieles davon erfordert das Bearbeiten von Befehlszeilen, Sicherheitsbeschreibungen oder sogar das Anpassen von Richtlinien. Es ist nicht kinderleicht, aber machbar. Und da Windows alles etwas komplizierter gestalten muss, bergen die meisten dieser Optionen einige Fallstricke oder Besonderheiten.

So passen Sie die Berechtigungen von Windows-Diensten an: verschiedene Methoden

Dienstberechtigungen mit der Windows-Eingabeaufforderung verwalten

Dies ist der direkteste, aber ehrlich gesagt etwas umständliche Weg: die Verwendung von sc.exe und die manuelle Bearbeitung der Sicherheitsbeschreibung des Dienstes. Warum ist das hilfreich? Weil man präzise Berechtigungen festlegen kann, allerdings im SDDL-Format (Security Descriptor Definition Language), das ziemlich undurchsichtig ist. Wenn Sie beispielsweise der Gruppe „Authentifizierte Benutzer“ die Berechtigung zum Neustart eines Dienstes erteilen möchten, ist dies dennoch möglich. Wann ist diese Methode sinnvoll? Wenn Sie mit der Kommandozeile vertraut sind und die direkte Kontrolle ohne zusätzliche Installationen wünschen.

Prüfen Sie beispielsweise zunächst die aktuellen Berechtigungen:

sc sdshow Spooler

Sie sehen eine lange Zeichenkette – sie sieht aus wie Hieroglyphen, stellt aber tatsächlich Berechtigungen im SDDL-Format dar. Um Berechtigungen zu ändern, erstellen oder bearbeiten Sie diese Zeichenkette mit den entsprechenden Zulassungs-/Verweigerungsflags und der Benutzer-/Gruppen-SID. Um beispielsweise einem bestimmten Benutzer mit einer bestimmten SID die Berechtigung zum Starten und Stoppen des Dienstes zu erteilen, fügen Sie Folgendes hinzu:

sc sdset Spooler "D:(A;;RPWPCR;;;S-1-5-21-...)"

Dieser Teil ist etwas knifflig, und Sie müssen die SIDs korrekt ermitteln. Die SID eines Benutzers finden Sie mit dem whoami /userBefehl `sudo` oder, falls Sie sich in einer Domäne befinden, mit PowerShell Get-ADUser. Nicht alle Benutzer sind so einfach zu ermitteln, daher sollten Sie sich darauf einstellen, die SIDs gegebenenfalls etwas zu suchen. Wenn Sie die richtige SID gefunden haben, kann ein Benutzer ohne Administratorrechte den Spooler möglicherweise mit Befehlen wie den folgenden neu starten net stop spooler && net start spooler:

Und ja, bei manchen Konfigurationen funktioniert das nicht gleich beim ersten Mal – ein Neustart oder eine erneute Anmeldung kann nötig sein, damit die Berechtigungen wirksam werden. Windows macht es einem gerne unnötig schwer.

Dienstberechtigungen mit dem Prozess-Explorer ändern

Eine weitere gute Option – mit grafischer Benutzeroberfläche, falls Sie das bevorzugen – ist der Process Explorer von Sysinternals (kostenlos von Microsoft).Er ist quasi ein Trick, um Berechtigungen anzupassen, ohne die Kommandozeile zu verwenden. Sie führen ihn als Administrator aus, suchen den Prozess, der mit Ihrem Dienst verknüpft ist (z. B.spoolsv.exefür den Druckspooler), und überprüfen dessen Eigenschaften.Über die Schaltfläche „Berechtigungen“ können Sie bestimmte Benutzer oder Gruppen hinzufügen und ihnen Berechtigungen wie Starten/Stoppen oder Lesen zuweisen.

Das funktioniert gut, wenn man nicht mit SDDL-Strings arbeiten möchte, bietet aber möglicherweise nicht so detaillierte Kontrolle wie sc.exe. Dennoch ist es praktisch, insbesondere für Anwender, die eher visuell arbeiten und sich nicht mit Hexadezimalcodes oder PowerShell-Modulen auseinandersetzen wollen.

Wichtig: Standardmäßig können lokale Benutzer hier nur den Status eines Dienstes einsehen. Um die Berechtigungen anzupassen, müssen Sie die erweiterten Berechtigungen aufrufen und genau festlegen, was erlaubt ist (z. B.Starten, Stoppen oder Abfragen).Manchmal ist die Schreibberechtigung zum Starten/Stoppen erforderlich. Seien Sie jedoch vorsichtig: Dadurch können Benutzer auch die Dienstkonfiguration verändern.

Dienstberechtigungen mit PowerShell festlegen

Wenn Sie sich besser mit PowerShell auskennen, gibt es hier einige Möglichkeiten, die jedoch von Ihrer PowerShell-Version abhängen. In PowerShell 5.1 Set-Serviceunterstützt das native Cmdlet das direkte Festlegen von Sicherheitsdeskriptoren nicht. Für PowerShell Core (Version 7 und höher) gibt es jedoch einen Trick mit bestimmten Modulen oder benutzerdefinierten Befehlen.

Für natives Windows PowerShell benötigen Sie üblicherweise ein Modul wie Winhance oder benutzerdefinierten Code, um die ACLs eines Dienstes anzupassen. Alternativ können Sie externe Tools aufrufen oder sc.exe in PowerShell-Skripten verwenden. Beispiel: Definieren und Anwenden einer SDDL-Zeichenfolge:

$SDDL = "D:(A;;CCLCSWLOCRRC;;;AU)..." Set-Service -Name Spooler -SecurityDescriptorSddl $SDDL

Hinweis: Dies funktioniert möglicherweise nicht auf Anhieb in allen Windows-Versionen. Es gibt jedoch Community-Module wie Carbon, die die Berechtigungsverwaltung vereinfachen, beispielsweise mit Befehlen wie [Befehl einfügen] Grant-CServicePermission. Dies ist auch ein guter Anlass, sich mit Sicherheitsdeskriptoren auseinanderzusetzen, selbst wenn es sich um ein eher komplexes Thema handelt.

Nutzung von Gruppenrichtlinien zur Berechtigungssteuerung (domänenweit)

Wenn es um vernetzte Rechner oder mehrere Server geht, ist die Gruppenrichtlinie hilfreich – zumindest teilweise. Sie können Dienstberechtigungen für mehrere Computer in Active Directory festlegen, ohne jeden Rechner einzeln konfigurieren zu müssen. Gehen Sie zu Computerkonfiguration > Windows-Einstellungen > Sicherheitseinstellungen > Systemdienste. Suchen Sie den gewünschten Dienst (z. B.Druckwarteschlange ) und definieren Sie die Sicherheitseinstellungen. Dort können Sie Benutzer- oder Gruppenkonten hinzufügen und ihnen Start-/Stoppberechtigungen erteilen.

Dies eignet sich gut für die zentrale Verwaltung, insbesondere in Unternehmensumgebungen. Der Haken? Die Anwendung von Gruppenrichtlinienobjekten (GPOs) erfordert etwas Geduld, und Sie müssen warten oder ein Update erzwingen gpupdate /force. Berechtigungen werden zudem binär in der Registrierung gespeichert. Wenn Sie Einstellungen klonen möchten, kann das Exportieren und Importieren dieser Registrierungsschlüssel hilfreich sein. Die Verwendung von GPOs ist jedoch in der Regel einfacher, wenn Sie mit vielen Rechnern arbeiten.

Wichtiger Hinweis: Diese Berechtigungen werden in Registrierungsschlüsseln unter gespeichert. Wenn Sie also Skripte erstellen oder Konfigurationen bereitstellen, können Sie diesen Registrierungswert exportieren und an anderer Stelle importieren. Seien Sie jedoch vorsichtig – es ist nicht gerade benutzerfreundlich.HKLM\System\CurrentControlSet\Services\\Security

Hoffentlich helfen diese Methoden auch Nutzern ohne Administratorrechte, etwas Kontrolle über die Dienste zu erlangen, ohne dabei das gesamte System zu zerstören.