Video-Tipp #56: NTFS-Berechtigungen in der PowerShell Berechtigungen in Windows mit der PowerShell steuern
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.

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.
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.docx
Set-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.
:quality(80)/p7i.vogel.de/wcms/63/11/6311f5dd526d11863ef7779c5a1b9801/0108199409.jpeg)
Video-Tipp #55: Mehr Sicherheit mit und trotz PowerShell
PowerShell Security Best Practices
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:\temp
Get-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.docx
Remove-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.docx
Add-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.
(ID:48974214)