Page 1 of 1

Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 17. Jan 2022, 11:00
by tim.v
Hallo,

versuche gerade das erste mal den angemeldeten Benutzer in eine durch das Setup angelegte lokale Gruppe hinzuzufügen, bekomme aber einen Fehler beim ausführen via SWDepot und bei Zuweisung im SWDepot-Log!?

Mittels Empirum PackageEditor via DebugMode mit Benutzeranteil funktioniert es!?

Versuch:

Paket mit /AW

Lösung:

Code: Select all

...
#Security:ProductClient, CLIENT DONTDELETE
...

Code: Select all

...
[Security:ProductClient]
LocalGroup.AddMember ("SPT_Factory","%USERDNSDOMAIN%\%USERNAME%")
...
Fehler:
Kann Sicherheitsbefehl nicht ausführen:

LocalGroup.AddMember ("SPT_Factory","%USERDNSDOMAIN%\%USERNAME%")

Windows-Fehlercode: 5
Zugriff verweigert

Habt Ihr eine Idee? :roll:

LG
Tim

Re: Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 17. Jan 2022, 12:21
by Hendrik_Ambrosius
Kann es sein, dass die USERNAME Variable leer ist weil das Script nun im Agent Kontext (local system) läuft?

Re: Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 17. Jan 2022, 12:31
by czimmer
Hallo,

wir stehen genau vor dem gleichen Problem.

Wir müssen "Docker Desktop" auf diverse Clients verteilen, was prinzipiell kein Problem ist.
Allerdings muss auch der lokal angemeldete Benutzer dann in die von Docker während der Installation angelegte lokale Gruppe "docker-users" eingefügt werden. Bei der Installation wird hier automatisch SYSTEM eingefügt, was natürlich keinen Sinn macht.

Wir würden das gerne so lösen, dass die Domainuser in diese Gruppe eingefügt werden, klappt aber nicht.

Wir haben das direkt unter [Security:Product] eingefügt.

Wie muss da die Syntax aussehen?
LocalGroup.AddMember("docker-users","Domain\Domain Users") ?

Kann das während der Installation mit dem Systemuser und mit einer Nicht-Standard-Gruppe überhaupt funktionieren?

Andere Idee von uns wäre gewesen, das Ganze über ein Powershell-Script zu machen, welches mit einem speziellen User aufgerufen wird, der AD-Berechtigungen hat. Ist aber unschön, falls mit diesem Account mal was passiert...

Gruß
Christian

Re: Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 17. Jan 2022, 14:01
by Hendrik_Ambrosius
Ob das geht hängt von den AD-Berechtigungen und Policys ab.
RUNAS könnte funktionieren wenn es nicht auch über GPOs geblockt ist.

Man kann auch den aktuellen User auslesen und dann damit arbeiten:
https://www.digitalcitizen.life/how-gen ... d-windows/

Nicht zuletzt könnt man auch den User über eine Übergabedatei an den Empirum Hauptserver zurückmelden (über das Log oder eine Datei in EMPINV) und dort greift ein in Schleifen laufendes Script (Powershell?) das auf und führt die Berechtigung vom Server aus durch.

Re: Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 17. Jan 2022, 14:10
by tim.v
Hendrik_Ambrosius wrote: 17. Jan 2022, 12:21 Kann es sein, dass die USERNAME Variable leer ist weil das Script nun im Agent Kontext (local system) läuft?
Hallo Herr Ambrosius,

ich werde das versuchen zu prüfen..., aber ist es überhaupt möglich einen [Security:XXX]-Abschnitt mit (als) CLIENT auszuführen?
Hab das noch nie gemacht, deshalb die Frage. Der Hilfe konnte ich dazu bisher nichts entlocken :roll:

LG
Tim

Re: Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 17. Jan 2022, 14:38
by tim.v
Hallo Herr Ambrosius,

in einem [Security:XXX]-Abschnitt kann ich leider nicht mit z.B. echo ein Debuglog schreiben!?

Code: Select all

#Security:ProductClient, CLIENT DONTDELETE

Code: Select all

[Security:ProductClient]
;=== LOG===
-callhidden cmd.exe /c Echo "Security:ProductClient END [%username%]" >> "%V_DebugLog%"
callhidden cmd.exe /c Echo "Security:ProductClient START [%username%]" >> "%V_DebugLog%"

callhidden cmd.exe /c Echo "%USERDNSDOMAIN%\%USERNAME%" >> "%V_DebugLog%"
;LocalGroup.AddMember ("SPT_Factory","%USERDNSDOMAIN%\%USERNAME%")

;=== LOG===
callhidden cmd.exe /c Echo "Security:ProductClient END [%username%]" >> "%V_DebugLog%"
-callhidden cmd.exe /c Echo "Security:ProductClient START [%username%]" >> "%V_DebugLog%"
In einem [ProductClient]-Abschnitt wird aber korrekt %USERDNSDOMAIN% und %USERNAME% für den Benutzer aufgelößt.

Code: Select all

#Set:ProductClient, CLIENT DONTDELETE

Code: Select all

[Set:ProductClient]
;=== LOG===
callhidden cmd.exe /c Echo "Set:ProductClient START [%username%]" >> "%V_DebugLog%"

callhidden cmd.exe /c Echo "%USERDNSDOMAIN%\%USERNAME%" >> "%V_DebugLog%"

;=== LOG===
callhidden cmd.exe /c Echo "Set:ProductClient END [%username%]" >> "%V_DebugLog%"
Haben sie einen Tipp wie ich den [Security:XXX]-Abschnitt debuggen kann?


LG
Tim

Re: Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 17. Jan 2022, 16:24
by Hendrik_Ambrosius
Genau, das geht nur in SET.
Also so was machen wie:
#Security:Teil1
#Set:CALL-was-auch-immer
#Security:Teil2

Re: Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember im Benutzeranteil!?

Posted: 18. Jan 2022, 09:25
by tim.v
Hallo nochmal,

ich habe folgendes versucht:

Code: Select all

;=== LOG===
callhidden cmd.exe /c Echo "Security:Product START [%username%]" >> "%V_DebugLog%"
-callhidden cmd.exe /c Echo "Security:Product END [%username%]" >> "%V_DebugLog%"
#Security:Product, CLIENT
;=== LOG===
callhidden cmd.exe /c Echo "Security:Product END [%username%]" >> "%V_DebugLog%"
-callhidden cmd.exe /c Echo "Security:Product START [%username%]" >> "%V_DebugLog%"
#Set:Tmp:ProductClient, CLIENT
;=== LOG===
callhidden cmd.exe /c Echo "Security:ProductClient START [%username%]" >> "%V_DebugLog%"
-callhidden cmd.exe /c Echo "Security:ProductClient END [%username%]" >> "%V_DebugLog%"
#Security:ProductClient, CLIENT
;=== LOG===
callhidden cmd.exe /c Echo "Security:ProductClient END [%username%]" >> "%V_DebugLog%"
-callhidden cmd.exe /c Echo "Security:ProductClient START [%username%]" >> "%V_DebugLog%"

Code: Select all


[Security:Product]
;LocalGroup.AddMember ("SPT_Factory","%USERDNSDOMAIN%\%USERNAME%")

[Set:Tmp:ProductClient]
callhidden cmd.exe /c Echo "%USERDNSDOMAIN%\%USERNAME%" >> "%V_DebugLog%"

[Security:ProductClient]
;LocalGroup.AddMember ("SPT_Factory","%USERDNSDOMAIN%\%USERNAME%")
Das Ergebnis ist sehr merkwürdig

Log (SYSTEM):
"Security:Product START [SYSTEM]"
"Security:Product END [SYSTEM]"
"Security:ProductClient START [SYSTEM]"
"Security:ProductClient END [SYSTEM]"
Log (CLIENT):
"Security:Product END [<Benutzername>]"
"<Domäne>\<Benutzername>"
"Security:ProductClient START [<Benutzername>]"
"Security:ProductClient END [<Benutzername>]"
Der "Security:Product"-Abschnitt wird scheinbar im CLIENT-Anteil nicht gestartet, sondern nur beendet!? "Security:Product START [<Benutzername>]" wird nicht geschrieben!? Der temporäre Abschnitt [Set:Tmp:ProductClient] wird ordnungsgemäß ausgeführt und die Variablen aufgelößt.

Beim Uninstall verhält es sich genau so!?

Wenn ich jetzt im [Security:Product]-Abschnitt LocalGroup.AddMember einkommentiere wird dieser auch nicht mehr beendet, da ja Fehler:
Kann Sicherheitsbefehl nicht ausführen: LocalGroup.AddMember ("SPT_Factory","%USERDNSDOMAIN%\%USERNAME%") Windows-Fehlercode: 5 Zugriff verweigert
kommt. Ausgeführt wird er aber ja scheinbar, sonst würde der Fehler ja nicht kommen.

Wenn ich das Ganze jetzt aber noch einmal Revue passiere, dann müsste ja ein Benutzer das Recht haben sich selbst in eine lokale Gruppe zu heben, was ja auch manuell gar nicht geht. Ergo, kann er das im Benutzeranteil auch nicht.

Das bedeutet das es mit einem Empirum-Paket so gar nicht funktionieren kann :roll: