Tags: NTFS, PowerShell, Rechteverwaltung
Der Besitz von NTFS-Objekten und die Vererbung sind wesentliche Mechanismen für die Vergabe von Zugriffsrechten. Die Bordmittel von PowerShell sind für das Management dieser Features aber umständlich oder unzureichend. Das Modul NTFSSecurity vereinfacht diese Aufgabe mit mehreren Cmdlets.
NTFSSecurity wurde vom Microsoft-Mitarbeiter Raimund Andrée als eigenständiges Modul entwickelt. Es muss erst installiert und importiert werden, bevor seine Cmdlets einsatzbereit sind. Die dafür bevorzugte Methode nutzt das Package Management von PowerShell. Wie man dabei vorgeht, habe ich in diesem Beitrag beschrieben.
Besitzer von Dateien ändern
Damit ein User den Besitz an einer Datei oder einem Verzeichnis übernehmen kann, muss ihm erst das dafür nötige Recht eingeräumt werden. Ausgenommen davon sind Administratoren, die anderen Benutzern immer den Besitz an einer Datei zuordnen dürfen, auch wenn sie das betreffende Objekt gar nicht selbst angelegt haben.
Während man dafür in der bloßen PowerShell icacls.exe oder .NET-Klassen bemühen muss, lässt sich dieses Recht mit NTFSSecurity einfach über das Cmdlet Add-NTFSAccess erteilen:
Add-NTFSAccess -AccessRights TakeOwnership -Account contoso\myUsers -Path .\temp
Dieser Aufruf würde der Gruppe myusers das Recht gewähren, den Besitz über das Verzeichnis temp zu übernehmen.
Anschließend könnten die betreffenden Benutzer diese Möglichkeit in Anspruch nehmen. Auch hier reicht mit NTFSSecurity ein Kommando, während man in PowerShell alleine den Umweg über Get-Acl nehmen muss:
Set-NTFSOwner -Path .\temp -Account contoso\flee
Das Cmdlet Set-NTFSOwner erwartet neben dem Pfad immer die Angabe eines Benutzers oder einer Gruppe, auch wenn der Besitz an den aktuell angemeldeten Benutzer übertragen werden soll.
Um festzustellen, wer Besitzer einer Datei oder eines Verzeichnisses ist, verwendet man den Gegenspieler von Set-NTFSOwner:
Get-NTFSOwner -Path .\temp
Beide Cmdlets leiden unter dem Nachteil, dass der Parameter Path zwar mehrere Dateinamen, aber keine Wildcards akzeptiert. Außerdem können sie sich nicht rekursiv durch Verzeichnisbäume arbeiten. Daher übergibt man ihnen für diesen Zweck den Output von Get-ChildItem. Dieses weist aber ein Limit für Pfadlängen von 260 Zeichen auf, weshalb NTFSSecurity das Cmdlet Get-ChildItem2 ohne diese Einschränkung enthält:
Get-ChildItem2 -Directory -Recurse | Get-NTFSOwner
Dieser Befehl würde die Besitzer für alle Unterverzeichnisse des aktuellen Ordners ausgeben.
Analog dazu würde
Get-ChildItem2 -Directory | Set-NTFSOwner - Account contoso\flee
den Besitz dieser Verzeichnisse an den User flee übertragen.
Vererbung aktivieren und deaktivieren
Das Modul NTFSSecurity bringt auch deutliche Verbesserungen beim Management der Vererbung von Zugriffsrechten. Zuständig sind dafür die Cmdlets
- Get-NTFSInheritance
- Disable-NTFSAccessInheritance
- Enable-NTFSAccessInheritance
Das erste davon zeigt erwartungsgemäß an, ob für bestimmte Ordner oder Dateien die Vererbung aktiviert bzw. unterbunden wurde:
Get-NTFSInheritance -Path .\Sysmon.zip
Dieser Befehl gibt Auskunft darüber, ob die Datei Sysmon.zip die Berechtigungen vom übergeordneten Verzeichnis erbt. Möchte man dies verhindern, dann erledigt das Kommando
Disable-NTFSAccessInheritance -Path .\Sysmon.zip
diese Aufgabe. Bei dieser Gelegenheit werden die zuvor ererbten Rechte in explizit zugewiesene Berechtigungen umgewandelt. Beim umgekehrten Vorgang nach dem Muster
Enable-NTFSAccessInheritance -Path . \Sysmon.zip
bleiben diese expliziten Rechte erhalten und werden dann noch durch die ererbten verdoppelt. Wenn man das vermeiden möchte, dann ruft man das Cmdlet mit dem Schalter RemoveExplicitAccessRules auf:
Enable-NTFSAccessInheritance -Path .\Sysmon.zip -RemoveExplicitAccessRules
Diesen Befehl kann man auch auf Objekte anwenden, bei denen die Vererbung bereits aktiviert ist, nur um die expliziten Rechte schnell und einfach zu entfernen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- NTFS-Rechte anzeigen, zuweisen und entfernen mit dem PowerShell-Modul NTFSSecurity
- Ordner freigeben mit PowerShell
- Exchange Impersonation: Service-Benutzer auf Postfächer berechtigen
- NTFS-Berechtigungen über Gruppenrichtlinien anpassen
- Access Manager: Wiedervorlage für Mitgliedschaften in AD-Gruppen und für NTFS-Rechte
Weitere Links