NTFS Berechtigungstool mit Active Directory Gruppen Erstellung
Hallo zusammen,
Ich suche ein Skript oder Tool welches :
a) durch die angebe eine Pfades im Active Directory eine Gruppe erzeugen kann
b) diese Gruppe im NTFS Filesystem berechtigt
[Bis hier hin ja nicht schwer]
Und dann aber wenn es sich um die x te Untereben handelt
a) die entsprechenden List Gruppen Pro unterordnete im AD erzeugt und diese Berechtigt mit "Nur dieser Ordner"
b) den Baum durch verschachteln aufbaut
c) prüft ob es bereits eine Listgruppe gibt und die darunter dann hinzufügt.
Beispiel Pfad:
\\Server\Freigabe\Ebene1\Ebene2\Ebene3
Beispiel Gruppen:
DIR_Freigabe_Ebene1_Ebene2_Ebene3_modify
DIR_Freigabe_Ebene1_Ebene2_list
DIR_Freigabe_Ebene1_list
DIR_Freigabe_Eben1_Ebene2_Ebene3_modify
ist in der
DIR_Freigabe_Ebene1_Ebene2_List
ist in der
DIR_Freigabe_Ebene1_List
Verschachtelt
(Nested Groups)
Vielen Dank
Mit freundlichen Grüßen Nemesis
Ich suche ein Skript oder Tool welches :
a) durch die angebe eine Pfades im Active Directory eine Gruppe erzeugen kann
b) diese Gruppe im NTFS Filesystem berechtigt
[Bis hier hin ja nicht schwer]
Und dann aber wenn es sich um die x te Untereben handelt
a) die entsprechenden List Gruppen Pro unterordnete im AD erzeugt und diese Berechtigt mit "Nur dieser Ordner"
b) den Baum durch verschachteln aufbaut
c) prüft ob es bereits eine Listgruppe gibt und die darunter dann hinzufügt.
Beispiel Pfad:
\\Server\Freigabe\Ebene1\Ebene2\Ebene3
Beispiel Gruppen:
DIR_Freigabe_Ebene1_Ebene2_Ebene3_modify
DIR_Freigabe_Ebene1_Ebene2_list
DIR_Freigabe_Ebene1_list
DIR_Freigabe_Eben1_Ebene2_Ebene3_modify
ist in der
DIR_Freigabe_Ebene1_Ebene2_List
ist in der
DIR_Freigabe_Ebene1_List
Verschachtelt
(Nested Groups)
Vielen Dank
Mit freundlichen Grüßen Nemesis
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1126973059
Url: https://administrator.de/contentid/1126973059
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Hi @nEmEsIs,
grundsätzlich würde ich das auch mit PowerShell realisieren. Aber bevor du das umsetzt, kann ich dir nur nahelegen, zu überlegen, ob du das wirklich willst, da diese komplexen Strukturen irgendwann niemand mehr durchblickt.
Wir sind vor langer Zeit dazu übergegangen, dass es nur noch auf der obersten Ebene im File Service pro Ordner eine Read- und eine Modify-Grupe gibt. Dann hatteman entweder Zugriff auf alles in diesem Ordner oder eben nicht. Aber es wird nicht tiefer als auf Ebee 1 berechtigt. Neue Berechtigung = neuer Ordner auf Ebene 1.
Das hat die Sache deutlich erleichtert, transparenter gemacht und Problemen vorgebeugt. Nur mal so als Idee.
Viele Grüße
Festus94
grundsätzlich würde ich das auch mit PowerShell realisieren. Aber bevor du das umsetzt, kann ich dir nur nahelegen, zu überlegen, ob du das wirklich willst, da diese komplexen Strukturen irgendwann niemand mehr durchblickt.
Wir sind vor langer Zeit dazu übergegangen, dass es nur noch auf der obersten Ebene im File Service pro Ordner eine Read- und eine Modify-Grupe gibt. Dann hatteman entweder Zugriff auf alles in diesem Ordner oder eben nicht. Aber es wird nicht tiefer als auf Ebee 1 berechtigt. Neue Berechtigung = neuer Ordner auf Ebene 1.
Das hat die Sache deutlich erleichtert, transparenter gemacht und Problemen vorgebeugt. Nur mal so als Idee.
Viele Grüße
Festus94
Servus Nemesis,
ohne das Konstrukt jetzt in Frage zu stellen, probier mal das als Grundgerüst (Achtung: Code aus Langeweile ungetestet frei aus dem Gedächtnis in der Bahn mit 10+ Internet-Unterbrechungen geschrieben, somit ohne Gewähr auf Leib und Leben ach was bin ich froh wenn ich die deutsche Grenze passiert habe, dann sind die Unterbrechungen wohl Vergangenheit.)
Script dann folgendermaßen mit dem Pfad als Parameter starten
Script
Grüße Uwe
ohne das Konstrukt jetzt in Frage zu stellen, probier mal das als Grundgerüst (Achtung: Code aus Langeweile ungetestet frei aus dem Gedächtnis in der Bahn mit 10+ Internet-Unterbrechungen geschrieben, somit ohne Gewähr auf Leib und Leben ach was bin ich froh wenn ich die deutsche Grenze passiert habe, dann sind die Unterbrechungen wohl Vergangenheit.)
Script dann folgendermaßen mit dem Pfad als Parameter starten
.\script.ps1 -path '\\SERVER\Share\Level1\Level2\Level3'
Script
param(
[Parameter(mandatory=$true)][string]$path
)
$ErrorActionPreference = "Stop"
# check path
if (Test-Path $path){
# get path as object
$current = Get-Item $path
}else{
# create directory if it does not exist
$current = md $path -Force
}
# start group mode
$mode = "modify"
# loop until root path of share equals current processed directory level
while($current.FullName -ne $current.Root.FullName){
write-host "Processing folder $($current.FullName) ... " -F Green -NoNewline
# construct group name
$grp_name = "DIR_" + (($current.Fullname -replace '^\\\\[^\\]+\\') -replace '\\','_') + "_$mode"
try{
# search group by constructed name
$grp = Get-ADGroup -Filter {SamAccountName -eq $grp_name}
# if group not found, create it
if (!$grp){
$grp = New-ADGroup -Name $grp_Name -GroupScope DomainLocal -GroupCategory Security -PassThru
}
# ace variable
$ace = $null
# different aces for modify and list modes
switch($mode){
'modify' {
# create 'modify' ace for deepest level
$ace = New-Object System.Security.AccessControl.FileSystemAccessRule $grp.SamAccountName,"Modify","ContainerInherit,ObjectInherit","none","Allow"
# set next group mode
$mode = 'list'
}
'list' {
# create read ace for list group (this folder only)
$ace = New-Object System.Security.AccessControl.FileSystemAccessRule $grp.SamAccountName,"Read","none","none","Allow"
# add last level group to current folder list group
Add-ADGroupMember $grp -Members $last
}
}
# set filesystem permission
$acl = Get-ACL $current.FullName
$acl.SetAccessRuleProtection($false,$true)
$acl.SetAccessRule($ace)
Set-ACL $current.FullName $acl
write-Host "OK" -F Green
# set last group
$last = $grp
# set next level to parent folder
$current = $current.Parent
}catch{
write-host $_.Exception.Message -F Red
exit 1
}
}