Video-Tipp #56: NTFS-Berechtigungen in der PowerShell Berechtigungen in Windows mit der PowerShell steuern

Von Thomas Joos Lesedauer: 3 min

Anbieter zum Thema

In der PowerShell lassen sich mit verschiedenen Cmdlets auch die ACLs von Verzeichnissen und Dateien abfragen und auch steuern. Damit ist es möglich Skripte zu erstellen oder in der Shell Berechtigungen zu überprüfen oder anzupassen. Wie das genau funktioniert, zeigt dieser Video-Tipp.

In diesem Video-Tipp zeigen wir, wie man mit der PowerShell Berechtigungen für Dateien oder Verzeichnisse abfragen und setzen kann.
In diesem Video-Tipp zeigen wir, wie man mit der PowerShell Berechtigungen für Dateien oder Verzeichnisse abfragen und setzen kann.
(Bild: Thapana_Studio - stock.adobe.com)

Mit der PowerShell lassen sich auch Berechtigungen für Dateien und Verzeichnisse abfragen oder anpassen. Damit ist es möglich Rechte über Skripte anzupassen oder auch zu setzen, ohne die GUI zu verwenden. Das Abfragen von Berechtigungen erfolgt mit dem Cmdlet „Get-Acl“, die Anpassung von Rechten wird mit „Set-Acl“ vorgenommen.

Wie man mit der PowerShell Berechtigungen für Dateien oder Verzeichnisse abfragen und setzen kann, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 8 Bildern

Berechtigungen mit Get-ACL in der PowerShell abfragen

Um Rechte einer Datei oder eines Verzeichnisses in der PowerShell abzufragen, ist der Befehl „Get-Acl <Pfad>“ der einfachste Weg. Gleichzeitig ist es auch möglich die ausgelesenen Berechtigungen in einer Variablen zu speichern. Dadurch lassen sich Berechtigungen in Verbindung von „Get-Acl“ und „Set-Acl“ erst auslesen und dann auf ein anderes Verzeichnis kopieren. Als Beispiel liest der folgende Befehl die Rechte der Datei „test1.docx“ aus und ersetzt im Anschluss die Rechte der Datei „test2.docx“ mit denen von „test1.docx“. Zu sehen ist das an den Rechten des Benutzers „thomas“. Um eine umfangreiche Liste der Berechtigungen anzuzeigen, kann die Ausgabe von „Get-Acl“ auch mit dem Pipe-Zeichen an das

Cmdlet „Formated-List“ ausgegeben werden:Get-Acl C:\temp\test1.docx |fl

Berechtigungen von Verzeichnissen und Dateien auf andere Objekte in der PowerShell übertragen

Um jetzt die Berechtigungen von „test1.docx“ zunächst als Variable zu speichern und danach auf die Datei „test2.docx“ zu übertragen, können folgende Befehle zum Einsatz kommen:

$acl = Get-Acl c:\temp\test1.docxSet-Acl c:\temp\test2.docx -AclObject $acl

Es ist mit der Pipeline aber auch möglich die Rechte ohne den Umweg über Variable zu senden, zum Beispiel mit:

Get-Acl C:\temp\test1.docx | Set-Acl C:\temp\test3.docx

Weitere Beispiele für das Cmdlet sind auf der Microsoft Learn-Seite zu „Set-Acl“ zu finden.

Berechtigungen in der PowerShell mit dem Modul NTFSSecurity steuern

Parallel zu den verfügbaren Berechtigungen kann in der PowerShell auch das Modul „NTFSSecurity“ installiert werden. Das erfolgt zum Beispiel mit dem folgenden Befehl aus der PowerShell Gallery:

Install-Module NTFSSecurity -Force #-AllowClobber

Danach lassen sich die verschiedenen Cmdlets anzeigen, mit denen wesentlich mehr Berechtigungen und Einstellungen gesetzt werden können, als mit den Standard-Bordmitteln der PowerShell:

Get-Command -Module NTFSSecurity

Um die Rechte eines Verzeichnisses übersichtlicher anzuzeigen, kann die Anzeige von „Get-Acl“ mit dem Cmdlet „Get-NTFSAccess“ aus dem Modul „NTFSSecurity“ verglichen werden, zum Beispiel mit den beiden Befehlen:

Get-Acl C:\tempGet-NTFSAccess C:\Temp

Um die Anzeige übersichtlich in einer Tabelle anzuzeigen, kann der folgende Befehl zum Einsatz kommen:

Get-NTFSAccess -Path C:\temp | Format-Table -AutoSize

In der PowerShell ist es darüber hinaus auch möglich zunächst alle Objekte und Unterverzeichnisse eines Verzeichnisses einzulesen und auf dieser Basis die Rechte anzuzeigen, zum Beispiel mit:

Get-ChildItem -Directory -Recurse | Get-NTFSAccess

Um den Befehl abzubrechen, kann STRG+C verwendet werden. Sollen auch noch die Rechte von Ordnern angezeigt werden, kann der folgende Befehl genutzt werden:

Get-ChildItem | Get-NTFSAccess

In der Anzeige ist auch zu sehen, von welchem Verzeichnis die Berechtigungen auf das aktuelle Objekt vererbt werden.

NTFS-Berechtigungen in der PowerShell mit Get-NTFSAccess, Add-NTFSAccess und Remove-NTFSAccess steuern

Die Ansicht von „Get-NTFSAccess“ ist wesentlich übersichtlicher und aussagekräftiger. Berechtigungen ändern lassen sich auf dieser Basis anschließend mit den Cmdlets „Add-NTFSAccess“ und auch mit „Remove-NTFS-Access“. Um zum Beispiel dem Benutzer „thomas“ aus dem oberen Beispiel die Rechte für die Datei „test3.docx“ zu entziehen und vorher anzuzeigen, kommen folgende Befehle zum Einsatz:

Get-NTFSAccess C:\Temp\test3.docxRemove-NTFSAccess -Account "xps2\thomas" -Path C:\Temp\test3.docx -AccessRights FullControl

Um Rechte zu entziehen wird zunächst mit dem Parameter „-Account“ gesteuert welches Konto aus der ACL entfernt werden soll. Der Parameter „-Path“ steuert den Pfad zum Verzeichnis oder zur Datei und „-AccessRights“ legt die spezifischen Rechte fest, die entfernt werden sollen.

Auf dem gleichen Weg lassen sich Rechte auch wieder setzen, zum Beispiel:

Get-NTFSAccess C:\Temp\test3.docxAdd-NTFSAccess -Account "xps2\thomas" -Path C:\Temp\test3.docx -AccessRights Modify

Die zur Verfügung stehenden Rechte lassen sich mit dem Befehl „Get-Help Add-NTFSAccess“ in der PowerShell anzeigen.

Wie man mit der PowerShell Berechtigungen für Dateien oder Verzeichnisse abfragen und setzen kann, zeigen wir hier im Video-Tipp und in der Bildergalerie.

Bildergalerie
Bildergalerie mit 8 Bildern

(ID:48974214)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung