thekivi
Goto Top

Windows 2019 Server Berechtigungen für das starten und stoppen von Diensten vergeben

Hallo Miteinander,

ich will auf einem Windows 2019 Server ohne Domain und kein Terminalserver(falls das wichtig ist) einem lokalem User das recht geben bestimmte Dienste zu stoppen und zu starten.
Hintergrund: Die Firma deren Software auf dem Server läuft soll diese Administrieren können ohne gleich globale Administrationsrechte zu bekommen.

Dienste als Domänen-Benutzer starten
Den Reiter Systemdienste in den GPO finde ich unter 2019 nicht mehr.

https://hitco.at/blog/windows-dienste-mit-benutzer-rechten-starten-und-s ...
Ist etwas umständlich und "sc.exe sdshow" Zeigt nicht die gleichen Daten wie im Export an (Laut meiner Vorstellung solle ja nur ein Datensatz dazu kommen). Ich will ja nichts kaputtmachen.

Gibt es eine einfache Methode mit Boardmitteln die Rechte unter 2019 zu setzen?

Danke
MfG
Thekivi

Content-ID: 571470

Url: https://administrator.de/contentid/571470

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

DerWoWusste
DerWoWusste 13.05.2020 um 15:48:30 Uhr
Goto Top
Installiere subinacl.

subinacl /service servicename /grant=Users=QSTOP
colinardo
Lösung colinardo 13.05.2020 aktualisiert um 18:53:26 Uhr
Goto Top
Servus.
Da gibt es einige Möglichkeiten.
Ich nehme meist die Powershell zur Hand und ergänzt den SecurityDescriptor des Dienstes mit dem User (elevated ausführen):
# Local user
$user = "MaxMuster"
# service name
$servicename = 'BlaBlaService'
# ------------------------
$service = gwmi win32_Service -Filter "Name = '$servicename'"
$service.Scope.Options.EnablePrivileges = $true
$sd = $service.GetSecurityDescriptor().Descriptor
# create trustee
$trustee = ([wmiclass]'Win32_trustee').psbase.CreateInstance()
$trustee.Domain = $env:COMPUTERNAME
$trustee.Name = $user
#create ace
$ace = ([wmiclass]'Win32_ACE').psbase.CreateInstance()
$ace.AccessMask = 131440
$ace.AceFlags = 0
$ace.AceType = 0
$ace.Trustee = $trustee
# add ace to the DACL array
$sd.DACL += $ace
# write sd
$service.SetSecurityDescriptor($sd)
Nur falls du es wissen willst die AccessMask 131440 bedeutet im Klartext folgende Rechte

  • UserDefinedControl
  • Start
  • ReadControl
  • Stop
  • Pause
  • Continue

Die möglichen Flags sind folgende und müssen addiert werden wenn man sie kombiniert:
        'QueryConfig'         =   1  
        'ChangeConfig'        =   2  
        'QueryStatus'         =   4  
        'EnumerateDependents' =   8  
        'Start'               =   16  
        'Stop'                =   32  
        'PauseContinue'       =   64  
        'Interrogate'         =   128  
        'UserDefinedControl'  =   256  
        'Delete'              =   65536  
        'ReadControl'         =   131072  
        'WriteDac'            =   262144  
        'WriteOwner'          =   524288  
        'Synchronize'         =   1048576  
        'AccessSystemSecurity'=   16777216  
        'GenericAll'          =   268435456  
        'GenericExecute'      =   536870912  
        'GenericWrite'        =   1073741824  
        'GenericRead'         =   2147483648  

Alternative

Oder man beliest sich in SDDL und ändert es mit sc sdset "servicename" <neuer descriptor>.
sc sdshow "servicename" zeigt einem den vorhandenen SecurityDescriptor.

In deinem Fall fügst du an den vorhandenen Security Descriptor folgendes an um einem User Execute-Rechte auf einen Dienst zu geben

(A;;CRRPRCWPDT;;;<SID DES USERS>)

SID natürlich anpassen


SetACL kann es auch.

Grüße Uwe
Th0mKa
Th0mKa 14.05.2020 um 01:15:47 Uhr
Goto Top
Moin,

der von Microsoft empfohlene Weg für das delegieren solcher Tasks ist JEA.

/Thomas
Thekivi
Thekivi 14.05.2020 um 08:19:27 Uhr
Goto Top
@colinardo Super vielen Dank, diese Lösung ist perfekt. Keine Installation und portable face-smile

@alle Danke für eure Hilfe.
DerWoWusste
DerWoWusste 14.05.2020 um 12:56:22 Uhr
Goto Top
PS: auch subinacl.exe ist portable face-smile