NTFS Ordnerberechtigungen - Vererbung der Berechtigungen aktivieren und deaktivieren
Hallo Zusammen,
ich stehe mal wieder vor einem Problem mit der Powershell.
Ich muss bei sehr vielen Ordner die Vererbung aktivieren um eine neue Berechtigung durch die komplette Struktur durcherben zu können. Anschließend muss ich das Skript wieder "rückwärts" laufen lassen um die Vererbung wieder zu deaktivieren. Hier geht es allerdings erst einmal nur um den ersten Teil.
Folgenden Quellcode habe ich mir bis jetzt zusammengestellt/gesucht:
Das Skript läuft auch ohne eine Fehlermeldung in der Powershell durch, nur verändert sich in meiner Ordnerstruktur an der gewünschten Stelle einfach gar nichts. Ich habe auch schon wiederholt mit den true und flase werten herumprobiert, allerdings brachte dies auch keine Besserung.
Ich arbeite mit dem Skript momentan noch in einer Teststruktur, also her mit den Ideen, noch kann nichts kaputtgehen
Danke Euch!
ich stehe mal wieder vor einem Problem mit der Powershell.
Ich muss bei sehr vielen Ordner die Vererbung aktivieren um eine neue Berechtigung durch die komplette Struktur durcherben zu können. Anschließend muss ich das Skript wieder "rückwärts" laufen lassen um die Vererbung wieder zu deaktivieren. Hier geht es allerdings erst einmal nur um den ersten Teil.
Folgenden Quellcode habe ich mir bis jetzt zusammengestellt/gesucht:
$Paths = get-content "C:\Ordnerliste.txt"
foreach($path in $Paths){
$acl = get-acl $path
$isProtected = $false
$preserveInheritance = $false
$acl.SetAccessRuleProtection($isProtected, $preserveInheritance)
Set-Acl $path -AclObject $acl
}
Das Skript läuft auch ohne eine Fehlermeldung in der Powershell durch, nur verändert sich in meiner Ordnerstruktur an der gewünschten Stelle einfach gar nichts. Ich habe auch schon wiederholt mit den true und flase werten herumprobiert, allerdings brachte dies auch keine Besserung.
Ich arbeite mit dem Skript momentan noch in einer Teststruktur, also her mit den Ideen, noch kann nichts kaputtgehen
Danke Euch!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 247549
Url: https://administrator.de/contentid/247549
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
13 Kommentare
Neuester Kommentar
Moin,
machst du am besten mit takeown und icacls:
Ordnerfreigaben einzelner Ordner komplett zurücksetzten
wenn du in einigen Ordnern keine Zugriffsrechte hast. Mit Powershell wirst du da sonst auf einige Hindernisse treffen, ich spreche aus Erfahrung
Grüße Uwe
machst du am besten mit takeown und icacls:
Ordnerfreigaben einzelner Ordner komplett zurücksetzten
wenn du in einigen Ordnern keine Zugriffsrechte hast. Mit Powershell wirst du da sonst auf einige Hindernisse treffen, ich spreche aus Erfahrung
Grüße Uwe
wie du einen Reset der Permissions mit icalcs machst kannst du ja unter oben geposteten Link nachlesen.
So läuft das selbe hier mit Powershell:
Bedenke aber das Powershell ab einer Pfadtiefe mit mehr als 260 Zeichen Probleme bekommt. Deshalb empfehle ich bei solchen Änderungen immer icacls.
So läuft das selbe hier mit Powershell:
$ordner = "\\Server\Share\Ordner"
foreach($path in (dir $ordner -Recurse |?{$_.PSIsContainer})){
$acl = get-acl $path.FullName
$acl.SetAccessRuleProtection($false, $false)
$acl.Access | ?{$_.IsInherited -eq $false} | %{$acl.RemoveAccessRule($_)|out-null}
Set-Acl $path.Fullname -AclObject $acl
}
Ah ja. Du willst also die Berechtigungen nochmal "nach unten durchdrücken", wie mit der GUI "Alle Berechtigungen für untergeordnete Objekte durch vererbbare Berechtigungen von diesem Ordner ersetzen" ?
Mal abgesehen davon, dass das mit Deinem Ansatz so wohl nicht ganz funktionieren wird, wäre es vielleicht sinnvoller, ein Script zu schreiben, welches generell in dieser Struktur die Berechtigungen setzt, wie sie sein sollen. Ich nehme doch an, dass die Struktur standardisiert ist, mit wiederkehrenden Unterordnernamen usw.
Da sollte es doch kein Problem sein, dass über Schleifen in einem Script abzubilden.
Der Ansatz mit dem einfachen "Vererbung an/ausschalten" bringt nichts, weil die expliziten (nicht geerbten), falschen ACE's dadurch nicht verändert werden.
E.
Mal abgesehen davon, dass das mit Deinem Ansatz so wohl nicht ganz funktionieren wird, wäre es vielleicht sinnvoller, ein Script zu schreiben, welches generell in dieser Struktur die Berechtigungen setzt, wie sie sein sollen. Ich nehme doch an, dass die Struktur standardisiert ist, mit wiederkehrenden Unterordnernamen usw.
Da sollte es doch kein Problem sein, dass über Schleifen in einem Script abzubilden.
Der Ansatz mit dem einfachen "Vererbung an/ausschalten" bringt nichts, weil die expliziten (nicht geerbten), falschen ACE's dadurch nicht verändert werden.
E.
Zitat von @emeriks:
Hi Colinardo,
inwiefern berücksichtigt das Script, dass durchaus gewünschte, ursprünglich gesetzte explizite ACE's dabei
erkannt werden?
meiner Meinung wollte er das doch nicht, er wollte doch erst mal alle gesetzten Rechte durch vererbte ersetzen. oder ??Hi Colinardo,
inwiefern berücksichtigt das Script, dass durchaus gewünschte, ursprünglich gesetzte explizite ACE's dabei
erkannt werden?
"vom übergeordneten Objekt erben" heißt doch bloß, dass die ACL um ACE's aus dem übergeordneten Ornder, welche für die Vererbung freigegeben sind, ergänzt wird. Vorhandene ACE werden dadurch nicht geändert. Wenn man dann das Erben der Rechte wieder abschaltet, dann werden nur die geerbten ACE's wieder aus der ACL entfernt und der Zustand ist wie vorher.
Wenn man an übergeordneten Ordner sagt, "durch vererbbare Berechtigungen.....ersetzen", dann heißt das, dass die ACL's der untergeordneten Objekte geleert und mit vererbaren ACE's aus dem übergeordneten Ordner gefüllt werden. Dann kann aber mächtig daneben gehen, wenn Du eine Struktur hast, wo Du an einigen Stellen bewusst die Vererbung "abgeschaltet" und nur explizite ACE's gesetzt hast, dann würdest Du hier durch das "Ersetzen von Oben" diese ACE löschen. Wenn Du dann die Vererbung wieder aufhebst, dann hast Du die Wahl, die vererbten zu entfernen oder diese als nicht-geerbte (ich nenne diese immer "explizite") drin zu lassen. So oder so. Es würde dann beim vormaligen Vorhandensein von gewünschten "Ausnahmen" diese nicht mehr enthalten. Und ich nehme an, das ist nicht, was Du willst.
E.
Wenn man an übergeordneten Ordner sagt, "durch vererbbare Berechtigungen.....ersetzen", dann heißt das, dass die ACL's der untergeordneten Objekte geleert und mit vererbaren ACE's aus dem übergeordneten Ordner gefüllt werden. Dann kann aber mächtig daneben gehen, wenn Du eine Struktur hast, wo Du an einigen Stellen bewusst die Vererbung "abgeschaltet" und nur explizite ACE's gesetzt hast, dann würdest Du hier durch das "Ersetzen von Oben" diese ACE löschen. Wenn Du dann die Vererbung wieder aufhebst, dann hast Du die Wahl, die vererbten zu entfernen oder diese als nicht-geerbte (ich nenne diese immer "explizite") drin zu lassen. So oder so. Es würde dann beim vormaligen Vorhandensein von gewünschten "Ausnahmen" diese nicht mehr enthalten. Und ich nehme an, das ist nicht, was Du willst.
E.