Zugriffsberechtigungen für Dateiserver mit PowerShell prüfen

Nicht-autorisierte Änderungen an Dateifreigaben können Nutzer aussperren. Erfahren Sie, wie Sie Berichte in PowerShell automatisiert erstellen, um die Problemursache aufzuspüren.

Wenn Sie herausfinden möchten, welcher Nutzer ein Problem mit Berechtigungen für Windows-Dateiserver verursacht hat, kann PowerShell Sie bei der Suche unterstützen.

Wenn viele Benutzer plötzlich den Zugriff auf Ordner in einer Dateifreigabe verlieren, verursachen meistens Windows-Dateiserverberechtigungen das Problem. Es ist jedoch gar nicht so leicht herauszufinden, wer diese Änderung verursacht hat. Das manuelle Überprüfen eines gesamten Dateiservers mit vielen Dateien und Ordnern kann eine mühsame Aufgabe sein. Mit PowerShell erstellen Sie automatisiert einen Überwachungsbericht, um Ordner mit Rechteproblemen aufzuspüren, die Sie dann beheben können.

So funktionieren Berechtigungen auf einem Windows-Dateiserver

Zwar sind für Windows-Systeme mehrere Dateisysteme verfügbar, das New Technology File System (NTFS) ist jedoch am weitesten verbreitet.

Es erlaubt das Einschränken des Zugriffs über Zugriffssteuerungslisten (Access Control List, ACLs), die jeden Zugriffssteuerungseintrag (Access Control Entry, ACE) katalogisieren. Er enthält Informationen über Benutzer- oder Gruppenkonten und deren Zugriffsrechte auf ein Objekt, zum Beispiel ein Ordner. Die Dokumentation von Microsoft verwendet häufig die Bezeichnung Windows-ACLs und NTFS-Berechtigung synonym.

Basierend auf den Anforderungen der Organisation passt der Administrator NTFS-Berechtigungen für den Ordner an. So wäre es zum Beispiel problematisch, wenn ein Benutzer mit einer höheren Zugriffsebene, zum Beispiel Führungskraft der C-Ebene, die Ordnerberechtigungen von Windows Server so ändern würde, dass Benutzer mit einer niedrigeren Zugriffsebene auf ihre Dateien in diesem Ordner oder einem darunter liegenden Unterordner zugreifen können.

Bevor wir uns damit befassen, wie Sie eine Prüfung der Windows-Dateiserverberechtigungen erstellen, sollten Sie mit den Methoden zum Abrufen von Zugriffsinformationen für einen Ordner vertraut machen. Dieser Artikel behandelt die Vorgehensweise in PowerShell 7; Sofern nicht anders angegeben, funktionieren die Befehle genauso in Windows PowerShell.

Suchen Sie nach Windows-Dateiserverberechtigungen mit dem Cmdlet Get-Acl

Das integrierte Cmdlet Get-Acl ruft die im Objekt gespeicherte Sicherheitsbeschreibung ab, zum Beispiel für einen Ordner auf der Windows-Dateifreigabe. Die Sicherheitsbeschreibung enthält Informationen wie den Objektbesitzer und ACLs, also Informationen zu Benutzern und Gruppen, die auf den Ordner zugreifen können. Der folgende Befehl zeigt die Ordnerberechtigungen an:

Get-Acl .\Marketing\

Die Ausgabe zeigt den Ordnerpfad, den Besitzer des Ordners und die Ordnerzugriffsliste an.

Abbildung 1: Get-Acl, ein bewährtes PowerShell Cmdlet, zeigt Informationen aus der Sicherheitsbeschreibung einer Datei an.
Abbildung 1: Get-Acl, ein bewährtes PowerShell Cmdlet, zeigt Informationen aus der Sicherheitsbeschreibung einer Datei an.

Für zusätzliche Details, zum Beispiel die gesamte Zugriffsliste, fügen Sie dem Befehl die Access-Eigenschaft hinzu:

(Get-Acl .\Marketing\).Access

Abbildung 2: Die Eigenschaft Access für das Get-Acl Cmdlet gibt eine detailliertere Ansicht der Zugriffskontrollliste eines Ordners aus.
Abbildung 2: Die Eigenschaft Access für das Get-Acl Cmdlet gibt eine detailliertere Ansicht der Zugriffskontrollliste eines Ordners aus.

Das Cmdlet gibt wieder, dass alle Ordnerberechtigungen explizit sind. Die IsInherited-Eigenschaft gibt an, dass die Berechtigungen nicht vom übergeordneten Ordner geerbt werden. In der Ausgabe ist auch zu erkennen, dass die Administratoren mit Zugriff auf diese Freigabe die richtige Vorgehensweise befolgt haben, indem sie die Berechtigungen für den Ordnerzugriff Gruppen zugeordnet haben und dann Nutzer zu diesen Gruppen – statt direkt Berechtigungen an einzelne Nutzer herauszugeben.

Windows-Dateiserverberechtigungen mit dem Cmdlet Get-NTFSAccess finden

Die andere Methode zum Anzeigen der Ordner-ACLs ist das Cmdlet Get-NTFSAccess im NTFSSecurity-Modul. Dieses Cmdlet hat eine ähnliche Syntax wie Get-Acl:

Get-NTFSAccess .\Marketing\

Dieses Cmdlet erzeugt eine Ausgabe, die für die Bewertung von NTFS-Berechtigungen leichter zu verstehen ist.

Abbildung 3: Das NTFSSecurity-Modul enthält ein Cmdlet, das die Dateiserverberechtigungen in Tabellenform ausgibt.
Abbildung 3: Das NTFSSecurity-Modul enthält ein Cmdlet, das die Dateiserverberechtigungen in Tabellenform ausgibt.

Die Tabelle zeigt das IsInherited-Attribut, das Ordner mit Berechtigungen identifiziert, die sich vom übergeordneten Ordner unterscheiden.

Die beste Funktion von Get-NTFSAccess ist, dass die gesamte Dateifreigabe sich mit einer PowerShell-Zeile überwachen lässt. Sie benötigen nur ein paar zusätzliche Codezeilen, um die Ausgabe in einen vorzeigbaren Bericht zu formatieren.

Lassen Sie uns zunächst durchgehen, wie Sie die Ordnerberechtigungen mit Get-ChildItem rekursiv abrufen, um alle Ordner zu finden und dann die Ausgabe an Get-NTFSAccess weiterzuleiten:

Get-ChildItem -Directory -Recurse | Get-NTFSAccess

Bei einer großen Dateifreigabe kann das Generieren der Konsolenausgabe recht lange dauern. Seien Sie darauf vorbereitet, es mit STRG+C abzubrechen oder testen Sie es zuerst in einem kleineren Ordner, um sicherzustellen, dass es wie erwartet funktioniert.

Abbildung 4: Der Bericht zeigt einen Nutzer an, der die Berechtigung hat, auf einen Ordner auf dem Fileserver zuzugreifen.
Abbildung 4: Der Bericht zeigt einen Nutzer an, der die Berechtigung hat, auf einen Ordner auf dem Fileserver zuzugreifen.

Der Screenshot zeigt die ersten Zeilen aus der Testumgebung. Die Berechtigungen des Unterordners Events werden alle geerbt, und das InheritedFrom-Attribut verweist auf den Marketing-Stammordner. Dadurch werden jedoch keine Berechtigungen gefunden, die nicht geerbt wurden. Verwenden Sie dazu das Cmdlet Where-Object und suchen Sie mit dem Ausrufezeichen, dem Not-Operator, nach Berechtigungen, die nicht geerbt werden:

Get-ChildItem -Verzeichnis -Recurse | Get-NTFSAccess | Wo-Objekt {!($_.IsInherited)}

Dies kann ebenfalls viel Zeit in Anspruch nehmen besonders, wenn Sie es in einem Ordner mit vielen Dateien ausführen. In der Testumgebung hat nur ein Ordner Berechtigungen, die sich vom Stammordner unterscheiden.

Abbildung 5: Der Bericht zeigt einen Nutzer an, der die Berechtigung hat, auf einen Ordner auf dem Fileserver zuzugreifen.
Abbildung 5: Der Bericht zeigt einen Nutzer an, der die Berechtigung hat, auf einen Ordner auf dem Fileserver zuzugreifen.

Die Ausgabe zeigt, dass ein Benutzer namens John Doe Berechtigungen für den Ordner Dateien hat und die anderen geerbten Berechtigungen weiterhin aktiviert sind. Wenn der Benutzer die Vererbung für diesen Ordner deaktiviert hat, würde der Bericht etwas anderes anzeigen.

Abbildung 6: In diesem Bericht weist das Audit auf das verdächtige Verhalten eines Nutzers hin, der Ordnererlaubnisse angepasst hat.
Abbildung 6: In diesem Bericht weist das Audit auf das verdächtige Verhalten eines Nutzers hin, der Ordnererlaubnisse angepasst hat.

Dieser Benutzer hat einige problematische Aktionen auf der Dateifreigabe ausgeführt. Sie haben die Vererbung deaktiviert und die Gruppe File Share Admins entfernt. Es kann sich dabei um ein Versehen handeln – oder aber um Absicht.

Das Formatieren des Zugriffsberichts in eine Excel-Datei

Nachdem wir nun die Daten produzieren konnten, können wir mit dem Erstellen einer präsentablen Version des Berichts fortfahren, um ihn mit einem Entscheidungsträger in der Abteilung zu teilen. Das ist üblicherweise der Besitzer der Dateifreigabe und ein IT-Manager. Der Einfachheit halber exportieren wir den Bericht als Excel-Tabelle.

Es gibt zwei Möglichkeiten: Entweder führen Sie den PowerShell-Befehl in einer langen Zeile aus, oder Sie weisen der vorherigen Ausgabe eine Variable zu und geben diese dann als Kalkulationstabelle aus. Da es lange dauern kann, alle Berechtigungen für eine große oder komplexe Dateifreigabe zu sammeln, ist die zweite Version der bessere Weg. Von Vorteil ist außerdem, dass Sie Daten überprüfen können, bevor Sie den Bericht formatieren.

So verwenden Sie das ImportExcel-Modul

Sie verwenden ein Cmdlet namens Export-Excel im ImportExcel-Modul, um die Datei zu erstellen. Das funktioniert sowohl mit Windows PowerShell als auch mit PowerShell 7. Wenn Sie es nicht auf Ihrem System haben, installieren Sie es mit dem folgenden Befehl:

Install-Modul ImportExcel

Der folgende PowerShell-Code gibt die bevorzugten Parameter für Export-Excel an, um die Daten in eine Tabelle einzufügen und die Spalten automatisch zu formatieren:

$notInherited = Get-ChildItem -Directory -Recurse | Get-NTFSAccess | Where-Object {!($_.IsInherited)}

$notInherited | Export-Excel C:\Path\To\Report.xlsx -TableName Permissions -AutoSize

Dieser Screenshot zeigt ein Beispiel für eine von PowerShell automatisch generierten Kalkulationstabelle.

Abbildung 7: Hier sehen wir ein Beispiel für die Excel-Version des PowerShell-Berichts für Freigabeberechtigungen.
Abbildung 7: Hier sehen wir ein Beispiel für die Excel-Version des PowerShell-Berichts für Freigabeberechtigungen.

So passen Sie den Bericht über die Dateifreigabeberechtigungen an

Um Eigenschaften auszuschließen, verwenden Sie Select-Object. Ersetzen Sie den früheren Export-Excel-Befehl durch den folgenden:

$notInherited | Select-Object -ExcludeProperty

AccountType,InheritanceEnabled,InheritedFrom,IsInherited | Export-

Excel C:\temp\Report.xlsx -TableName Permissions -AutoSize

Der Screenshot zeigt die Excel-Tabelle mit den kuratierten Daten.

Abbildung 8: Um die im Bericht angezeigten Eigenschaften zu filtern, verwenden Sie das Select-Object-Cmdlet.
Abbildung 8: Um die im Bericht angezeigten Eigenschaften zu filtern, verwenden Sie das Select-Object-Cmdlet.

Wenn Sie den Bericht an andere weitergeben, erinnern Sie die Empfänger, nach der Spalte FullName zu sortieren. Häufig verfügt ein Dateiserver über mehrere Ordner mit Variationen eines allgemeinen Begriffs, zum Beispiel Dateien, sodass diese Sortierung das Auffinden der gesuchten Informationen erleichtert.

Erfahren Sie mehr über Serverbetriebssysteme

ComputerWeekly.de
Close