500 Ordner - NTFS Berechtigungen mit wenigen Klicks ändern
Hallo zusammen,
eine Fileserver-Migration steht an.
Der neue Fileserver bestitz 15 Ordner auf der ersten Ebene und darunter zwei weitere Ebenen, die den Datenbestand strukturieren.
In der dritten Ebene sollen nun unterschiedliche Berechtigungen zum Einsatz kommen. In Summe sind das knapp 500 Ordner, die in der dritten Ebene liegen.
Mir widerstrebt es jetzt in jedem Ordner die Rechtevererbung von Hand zu unterbrechen und danach die entsprechenden AD-Gruppen zu berechtigen.
Gibt es eine Möglichkeit, um diese Vererbung der NTFS-Rechte ohne viel Klickerei zu unterbrechen?
Die Gruppen den Rechten hinzuzufügen wäre ja noch ok. Aber diese elendige Klickerei zum Unterbrechen der Vererbung nervt ungemein.
Ich könnte mir vorstellen, die Ordner Strukturen in eine Textdatei zu packen und dann ein Skript darüber rennen zu lassen. Ich habe nur keine Ahnung, wie das dann aussehen muss, damit die Vererbung danach unterbrochen ist.
Besten Dank vorab!
Grüße
HamSpirit
eine Fileserver-Migration steht an.
Der neue Fileserver bestitz 15 Ordner auf der ersten Ebene und darunter zwei weitere Ebenen, die den Datenbestand strukturieren.
In der dritten Ebene sollen nun unterschiedliche Berechtigungen zum Einsatz kommen. In Summe sind das knapp 500 Ordner, die in der dritten Ebene liegen.
Mir widerstrebt es jetzt in jedem Ordner die Rechtevererbung von Hand zu unterbrechen und danach die entsprechenden AD-Gruppen zu berechtigen.
Gibt es eine Möglichkeit, um diese Vererbung der NTFS-Rechte ohne viel Klickerei zu unterbrechen?
Die Gruppen den Rechten hinzuzufügen wäre ja noch ok. Aber diese elendige Klickerei zum Unterbrechen der Vererbung nervt ungemein.
Ich könnte mir vorstellen, die Ordner Strukturen in eine Textdatei zu packen und dann ein Skript darüber rennen zu lassen. Ich habe nur keine Ahnung, wie das dann aussehen muss, damit die Vererbung danach unterbrochen ist.
Besten Dank vorab!
Grüße
HamSpirit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222598
Url: https://administrator.de/contentid/222598
Ausgedruckt am: 18.11.2024 um 23:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo HamSpirit,
hatten wir hier schon mehrfach. Mit Powershell und den CMDLets
Siehe dazu auch folgenden Beitrag: Powershell - Zugriffsberechtigungen von Ordnern übertragen
Ansonsten liefert eine Suche hier im Forum mit folgendem Suchstring die gewünschten Treffer :
"
Grüße Uwe
hatten wir hier schon mehrfach. Mit Powershell und den CMDLets
get-acl
und set-acl
kein Problem.Siehe dazu auch folgenden Beitrag: Powershell - Zugriffsberechtigungen von Ordnern übertragen
Ansonsten liefert eine Suche hier im Forum mit folgendem Suchstring die gewünschten Treffer :
"
powershell acl
"Grüße Uwe
Um es dir etwas einfacher zu machen, hier ein Script das du dazu hernehmen könntest:
Du legst für einen Ordner im System die gewünschten Berechtigungen fest die du auf die anderen Ordner übertragen möchtest, und trägst den Pfad in Zeile 1 des Scripts ein. Diese Berechtigungen werden dann auf alle Unterordner für den Pfad den du in Zeile 2 angibst angewendet inklusive Unterbrechung der Vererbung.
Grüße Uwe
Du legst für einen Ordner im System die gewünschten Berechtigungen fest die du auf die anderen Ordner übertragen möchtest, und trägst den Pfad in Zeile 1 des Scripts ein. Diese Berechtigungen werden dann auf alle Unterordner für den Pfad den du in Zeile 2 angibst angewendet inklusive Unterbrechung der Vererbung.
$sourceACL = get-acl -Path "C:\Temp\source"
$startFolder = "C:\Zielordner"
#Vererbung des ACL-Objektes deaktivieren (Parameter 1) bestehende Berechtigungen erhalten (Parameter 2)
$sourceAcl.SetAccessRuleProtection($true,$true)
#Alle Unterordner (erste Ebene des Ordners)
$allSubFolders = dir $startFolder | ?{$_.PSIsContainer}
#Für alle Unterordner der ersten Ebene die ACLs durch das des $sourceACL-Objektes ersetzen
foreach($folder in $allSubFolders){
Set-Acl -Path $folder.FullName -AclObject $sourceACL
}
Hallo Hamspirit,
ich würde das ganze in eine einzelne CSV-Datei packen die dann so aussehen könnte:
also in der ersten Spalte der Ordner, und in der zweiten Spalte mit Komma voneinander getrennt die Gruppen. So hat man alles zusammen in einer Datei und muss nicht immer hin und her springen... Deine Variante ist auch kein Problem, aber ich sehe keinen Grund das zu trennen.
Wenn du willst bau ich dir dazu das entsprechende Script.
Was auch noch benötigt wird sind dann die entsprechenden Zugriffsrechte (R/W,Vollzugriff, etc)
Grüße Uwe
ich würde das ganze in eine einzelne CSV-Datei packen die dann so aussehen könnte:
"FREIGABE";"BERECHTIGUNGEN"
"d:\freigabe\Ordner\bla\bla";"DOMAIN\Group1,DOMAIN\Group2,DOMAIN\Group3"
Wenn du willst bau ich dir dazu das entsprechende Script.
Was auch noch benötigt wird sind dann die entsprechenden Zugriffsrechte (R/W,Vollzugriff, etc)
Grüße Uwe
Zu meinem Beispiel mit der CSV-Datei kannst du folgendes Script hernehmen:
Die Formatierung der CSV-Datei sollte wie oben geschrieben so aussehen (inklusive der Überschriften):
Bin jetzt erst mal hier im Beispiel von "Vollzugriff" Rechten für die Gruppen ausgegangen, das lässt sich aber anpassen ...
Grüße Uwe
#CSV-Datei
$csvPermissions = import-csv "C:\Temp\permissions.txt" -Delimiter ";"
foreach($line in $csvPermissions){
#Freigabeordner
$folder = $line.Freigabe
#Berechtigungen
$groups = $line.Berechtigungen.Split(",")
#Wenn Ordner existier
if ((Test-Path $folder)){
#Wenn überhaupt Berechtigungen angegeben sind
if ($groups.length -gt 0){
#Neues leeres ACL-Objekt erzeugen
$newACL = New-Object System.Security.AccessControl.DirectorySecurity
#Vererbung der ACL deaktivieren
$newACL.SetAccessRuleProtection($true,$false)
#Für jede Gruppe die entsprechende AccessRule zur ACL hinzufügen
for ($i = 0 ; $i -lt $groups.length; $i++){
#Gebe der Gruppe "Vollzugriff" und vererbe diese Rechte an Unterordner und Objekte
$perm = $groups[$i],"FullControl","ContainerInherit,ObjectInherit","None","Allow"
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule $perm
$newACL.AddAccessRule($objACE)
}
# Schreibe die ACL
set-acl -Path $folder -AclObject $newACL
}
}else{
#Ordner wurde nicht gefunden
echo "Der Ordner '$folder' existiert nicht unterhalb von '$startFolder'!"
}
}
"Freigabe";"Berechtigungen"
"d:\freigabe\Ordner\bla\bla";"DOMAIN\Group1,DOMAIN\Group2,DOMAIN\Group3"
Bin jetzt erst mal hier im Beispiel von "Vollzugriff" Rechten für die Gruppen ausgegangen, das lässt sich aber anpassen ...
Grüße Uwe