Seite 1 von 1

mit opsi script erstellten Ordern für normaluser sperren

Verfasst: 11 Apr 2025, 09:22
von Rzpertt
Hallo,

ich erstelle in meinen Produkten eine Ordner in dem einige Software landet.
Wie kann ich diesen Ordner nur für Opsi und den Admins freigeben bzw. die Rechte dafür ändern?

Im Handbuch habe ich dazu nichts gefunden.
Ich wollte was mit "icacls" bauen, ist der Opsi User in der Admingruppe oder in System oder auch normaler User?

Ich würde "Benutzer" und "Authentifizierte Benutzer" einfach für den Ordner rausnehmen,
dann eine ACL erstellen und diese nach dem anlegen des Ordners importieren.

Im script lege ich den Ordner so an:

Code: Alles auswählen

[DosInAnIcon_Create]
mkdir "$tempordner$"
Ich habe das mal in der Powershell gebaut, geht das kürzer?

Code: Alles auswählen

#Vererbung deaktivieren
$acl = Get-Acl C:\temp\
$acl.SetAccessRuleProtection($true,$false)
$acl | Set-Acl C:\temp\

#Rechte für "admin" setzen
$acl = Get-Acl C:\temp\
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("PCNAME"\admin","FullControl","Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl C:\temp\

#Benutzer die Rechte nehmen
$acl = Get-Acl C:\temp\
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("VORDEFINIERT\Benutzer","FullControl","Allow")
$acl.RemoveAccessRule($AccessRule)
$acl | Set-Acl C:\temp\

#Benutzer den Rest nehmen
$acl = Get-Acl C:\temp\
$usersid = New-Object System.Security.Principal.Ntaccount ("VORDEFINIERT\Benutzer")
$acl.PurgeAccessRules($usersid)
$acl | Set-Acl C:\temp\

Re: mit opsi script erstellten Ordern für normaluser sperren

Verfasst: 14 Apr 2025, 12:18
von Rzpertt
ich habe mir 2 ps1 scripte gebaut und rufe die so auf:

Code: Alles auswählen


DefVar $Vererbung$
set $Vererbung$ = GetProductProperty("Vererbung","")

DefVar $PSSkript$
if $Vererbung$ = "an"
	set $PSSkript$ = "reset_rights_tempinstall.ps1"
else
	set $PSSkript$ = "set_rights_tempinstall.ps1"
endif

ShellScript_setpolicy
ExecWith_powershell  powershell.exe
;if $Vererbung$ = "an"
;	ExecWith_powershell  powershell.exe
;else
;	ExecWith_powershell_off  powershell.exe
;endif

set $exitcode$ = getLastExitcode
if not ($exitcode$ = "0")
	comment "powershell script failed"
endif

[ShellScript_setpolicy]
echo "powershell set-executionpolicy RemoteSigned ..."
powershell.exe set-executionpolicy RemoteSigned
exit %ERRORLEVEL%

[ExecWith_powershell]
powershell.exe "%ScriptPath%\$PSSkript$"
if ($?) {Exit(0)}
else {Exit(1)}
ISt das so einigermassen elegant und opsi konform?
Geht auf jeden Fall super und ich kann den Ordner auch noch per opsi bespielen.

Re: mit opsi script erstellten Ordern für normaluser sperren

Verfasst: 16 Apr 2025, 08:46
von n.doerrer
Ich kann mir vorstellen, dass das so funktioniert, ja. Aber setacl ist meines Wissens nicht immer vorhanden.
Wir nutzen intern mittlerweile "icacls", was allerdings eine ganz andere Syntax hat. Siehe z.B. https://github.com/opsi-org/opsi-client ... cript#L629

Re: mit opsi script erstellten Ordern für normaluser sperren

Verfasst: 16 Apr 2025, 10:50
von Rzpertt
Hallo,

danke dafür.
Ich habe das hier gebaut.

Code: Alles auswählen

[DosInAnIcon_set_temp_permissions]
icacls c:\temp /inheritance:r
icacls c:\temp /grant:r "*S-1-5-32-544:(OI)(CI)F" /grant:r "*S-1-5-18:(OI)(CI)F" /grant:r "admin:(OI)(CI)F"
icacls "$VarDir$" /setowner SYSTEM

[DosInAnIcon_set_temp_vererbung_an]
icacls c:\temp /q /c /t /reset
icacls "$VarDir$" /setowner SYSTEM
Jetzt hat er aber einiges doppelt drin wenn ich die vererbung wieder anmache

Code: Alles auswählen

C:\>icacls temp
tempinstall UG-UTVTBIB-CB1Q\admin:(OI)(CI)(F)
            NT-AUTORITÄT\SYSTEM:(OI)(CI)(F)
            VORDEFINIERT\Administratoren:(OI)(CI)(F)
            VORDEFINIERT\Administratoren:(I)(OI)(CI)(F)
            NT-AUTORITÄT\SYSTEM:(I)(OI)(CI)(F)
            VORDEFINIERT\Benutzer:(I)(OI)(CI)(RX)
            NT-AUTORITÄT\Authentifizierte Benutzer:(I)(M)
            NT-AUTORITÄT\Authentifizierte Benutzer:(I)(OI)(CI)(IO)(M)
macht das was?

Re: mit opsi script erstellten Ordern für normaluser sperren

Verfasst: 05 Mai 2025, 09:02
von n.doerrer
Moin,

das sollte eigentlich kein Problem sein. Wenn es eine geerbte und eine explizite Regel gibt, die sich wiedersprechen, müsste die explizite Vorrang haben. Ansonsten ergänzen sie sich.