So verwalten Sie Dateisystem-ACLs mit PowerShell-Skripten

NTFS-Berechtigungstypen für Dateien und Ordner

Es gibt sowohl grundlegende als auch erweiterte NTFS-Berechtigungen. Sie können jede der Berechtigungen auf „Zulassen“ oder „Verweigern“ festlegen. Hier sind die grundlegenden Berechtigungen:

  • Volle Kontrolle: Benutzer können Dateien und Verzeichnisse sowie die zugehörigen Eigenschaften ändern, hinzufügen, verschieben und löschen. Darüber hinaus können Benutzer Berechtigungseinstellungen für alle Dateien und Unterverzeichnisse ändern.
  • Ändern: Benutzer können Dateien und Dateieigenschaften anzeigen und ändern, einschließlich Löschen und Hinzufügen von Dateien zu einem Verzeichnis oder Dateieigenschaften zu einer Datei.
  • Read & Execute: Benutzer können ausführbare Dateien ausführen, einschließlich Skript
  • Read: Benutzer können Dateien, Dateieigenschaften und Verzeichnisse anzeigen.
  • Schreiben: Benutzer können in eine Datei schreiben und Dateien zu Verzeichnissen hinzufügen.

Hier ist die Liste der erweiterten Berechtigungen:

  • Ordner durchqueren / Datei ausführen: Benutzer können durch Ordner navigieren, um andere Dateien oder Ordner zu erreichen, auch wenn sie keine Berechtigungen für diese Dateien oder Ordner haben. Benutzer können auch ausführbare Dateien ausführen. Die Berechtigung „Traverse Folder“ wird nur wirksam, wenn die Gruppe oder der Benutzer nicht über das Recht „Bypass Traverse Checking“ im Gruppenrichtlinien-Snap-In verfügt.
  • Ordner auflisten/Daten lesen: Benutzer können eine Liste der Dateien und Unterordner innerhalb des Ordners sowie den Inhalt der Dateien anzeigen.
  • Attribute lesen: Benutzer können die Attribute einer Datei oder eines Ordners anzeigen, z. B. ob sie schreibgeschützt oder ausgeblendet ist.
  • Attribute schreiben: Benutzer können die Attribute einer Datei oder eines Ordners ändern.
  • Erweiterte Attribute lesen: Benutzer können die erweiterten Attribute einer Datei oder eines Ordners anzeigen, z. B. Berechtigungen sowie Erstellungs- und Änderungszeiten.
  • Erweiterte Attribute schreiben: Benutzer können die erweiterten Attribute einer Datei oder eines Ordners ändern.
  • Dateien erstellen/Daten schreiben: Mit der Berechtigung „Dateien erstellen“ können Benutzer Dateien innerhalb des Ordners erstellen. (Diese Berechtigung gilt nur für Ordner.) Mit der Berechtigung „Daten schreiben“ können Benutzer Änderungen an der Datei vornehmen und vorhandene Inhalte überschreiben. (Diese Berechtigung gilt nur für Dateien.)
  • Ordner erstellen/Daten anhängen: Mit der Berechtigung „Ordner erstellen“ können Benutzer Ordner innerhalb eines Ordners erstellen. (Diese Berechtigung gilt nur für Ordner.) Mit der Berechtigung „Daten anhängen“ können Benutzer Änderungen am Ende der Datei vornehmen, vorhandene Daten jedoch nicht ändern, löschen oder überschreiben. (Diese Berechtigung gilt nur für Dateien.)
  • Löschen: Benutzer können die Datei oder den Ordner löschen. (Wenn Benutzer nicht über die Berechtigung „Löschen“ für eine Datei oder einen Ordner verfügen, können sie diese dennoch löschen, wenn sie über die Berechtigung „Unterordner und Dateien löschen“ für den übergeordneten Ordner verfügen.)
  • Leseberechtigungen: Benutzer können die Berechtigungen einer Datei oder eines Ordners lesen, z. B. „Vollzugriff“, „Lesen“ und „Schreiben“.
  • Berechtigungen ändern: Benutzer können die Berechtigungen einer Datei oder eines Ordners ändern.
  • Inhaberschaft übernehmen: Benutzer können das Eigentum an der Datei oder dem Ordner übernehmen. Der Eigentümer einer Datei oder eines Ordners kann die Berechtigungen jederzeit ändern, unabhängig von vorhandenen Berechtigungen, die die Datei oder den Ordner schützen.
  • Synchronisieren: Benutzer können das Objekt zur Synchronisation verwenden. Dadurch kann ein Thread warten, bis sich das Objekt im signalisierten Zustand befindet. Dieses Recht wird im ACL-Editor nicht angezeigt. Sie können hier mehr darüber lesen.

Sie können alle diese Benutzerberechtigungen finden, indem Sie das folgende PowerShell-Skript ausführen:

::getnames()

NTFS-Berechtigungen können entweder explizit oder vererbt sein. Explizite Berechtigungen sind Berechtigungen, die einzeln konfiguriert werden, während vererbte Berechtigungen vom übergeordneten Ordner geerbt werden. Die Hierarchie für Berechtigungen lautet wie folgt:

  • Explicit Deny
  • Explicit Allow
  • Inherited Deny
  • Inherited Allow

Nachdem wir nun wissen, was NTFS-Berechtigungen sind, wollen wir untersuchen, wie sie verwaltet werden.

ACL für Dateien und Ordner abrufen

Das erste PowerShell-Cmdlet zum Verwalten von Datei- und Ordnerberechtigungen ist „get-acl“; es listet alle Objektberechtigungen auf. Lassen Sie uns beispielsweise die Liste aller Berechtigungen für den Ordner mit dem Objektpfad „\\fs1\shared\sales“ abrufen:

get-acl \\fs1\shared\sales | fl

Wenn Sie einen vollständigen NTFS-Berechtigungsbericht über PowerShell erhalten möchten, können Sie dieser einfachen Anleitung zum Exportieren von NTFS-Berechtigungen in CSV folgen.

Datei- und Ordnerberechtigungen kopieren

Um Berechtigungen zu kopieren, muss ein Benutzer sowohl den Quell- als auch den Zielordner besitzen. Der folgende Befehl kopiert die Berechtigungen aus dem Ordner „Accounting“ in den Ordner „Sales:

get-acl \\fs1\shared\accounting | Set-Acl \\fs1\shared\sales

Wie wir aus der Ausgabe der „get-acl“ -Befehle vor und nach der Berechtigungskopie sehen können, wurden die freigegebenen Ordnerberechtigungen „Sales“ geändert.

Datei- und Ordnerberechtigungen festlegen

Das PowerShell-Cmdlet „set-acl“ wird verwendet, um den Sicherheitsdeskriptor eines bestimmten Elements, z. B. einer Datei, eines Ordners oder eines Registrierungsschlüssels, zu ändern. Das folgende Skript setzt die Berechtigung „FullControl“ auf „Allow“ für den Benutzer „ENTERPRISE\T.Simpson“ in den Ordner „Sales“:

Wenn Sie andere Berechtigungen für Benutzer oder Sicherheitsgruppen festlegen möchten, wählen Sie diese aus der folgenden Tabelle aus:

Es gibt auch Berechtigungssätze mit grundlegenden Zugriffsrechten, die angewendet werden können:

Benutzerberechtigungen entfernen

Verwenden Sie den Parameter „RemoveAccessRule“, um eine Berechtigung zu entfernen. Löschen wir die Berechtigung „Allow FullControl“ für T.Simpson in den Ordner „Sales“:

Beachten Sie, dass T.Simpson hat immer noch die Berechtigung „Deny FullControl“. Um es zu entfernen, verwenden wir den Befehl „PurgeAccessRules“, der die Berechtigungen von T.Simpson für den Ordner „Sales“ vollständig löscht:

Beachten Sie, dass „PurgeAccessRules“ nicht mit einem String-Benutzernamen funktioniert; es funktioniert nur mit SIDs. Daher haben wir die Klasse „Ntaccount“ verwendet, um den Namen des Benutzerkontos von einer Zeichenfolge in eine SID zu konvertieren. Beachten Sie auch, dass „PurgeAccessRules“ nur mit expliziten Berechtigungen funktioniert.

Berechtigungsvererbung deaktivieren oder aktivieren

Um die Vererbung zu verwalten, verwenden wir die Methode „SetAccessRuleProtection“. Es hat zwei Parameter:

  • Der erste Parameter ist dafür verantwortlich, die Vererbung vom übergeordneten Ordner zu blockieren. Es hat zwei Zustände: „$ true“ und „$ false“.
  • Der zweite Parameter bestimmt, ob die aktuellen geerbten Berechtigungen beibehalten oder entfernt werden. Es hat die gleichen zwei Zustände: „$ true“ und „$ false“.

Deaktivieren wir die Vererbung für den Ordner „Sales“ und löschen alle geerbten Berechtigungen:

$acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($true,$false)$acl | Set-Acl \\fs1\shared\sales

Jetzt haben wir nur noch eine Zugriffsberechtigung (weil sie explizit hinzugefügt wurde); Alle geerbten Berechtigungen wurden entfernt.

Lassen Sie uns diese Änderung rückgängig machen und die Vererbung für den Ordner „Sales“ wieder aktivieren:

$acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($false,$true)$acl | Set-Acl \\fs1\shared\sales

Ändern Sie den Datei- und Ordnerbesitz

Wenn Sie einen Eigentümer für einen Ordner festlegen möchten, müssen Sie die Methode „SetOwner“ ausführen. Machen wir „ENTERPRISE \ J.Carter“ zum Eigentümer des Ordners „Sales“:

Beachten Sie, dass wir erneut die Klasse „Ntaccount“ verwendet haben, um den Namen des Benutzerkontos von einer Zeichenfolge in eine SID zu konvertieren.

Beachten Sie, dass Sie mit der Methode „SetOwner“ den Eigentümer nicht in ein beliebiges Konto ändern können; Das Konto muss über die Rechte „Inhaberschaft übernehmen“, „Lesen“ und „Berechtigungen ändern“ verfügen.

Wie Sie sehen, ist es sehr einfach, NTFS-Berechtigungen mit PowerShell zu verwalten. Vergessen Sie jedoch nicht, auch die NTFS—Berechtigungen zu überprüfen – es ist für die Sicherheit von entscheidender Bedeutung, alle an Ihren Dateiservern vorgenommenen Änderungen zu verfolgen, um Datenlecks zu reduzieren und die Insider-Bedrohung und andere IT-Sicherheitsrisiken zu bekämpfen. Hier finden Sie eine grundlegende Anleitung zum Überprüfen von NTFS-Berechtigungen mit PowerShell.

Jeff ist Director of Global Solutions Engineering bei Netwrix. Er ist ein langjähriger Netwrix Blogger, Redner und Moderator. Im Netwrix-Blog teilt Jeff Lifehacks, Tipps und Tricks mit, die Ihre Systemadministration erheblich verbessern können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.