PowerShell-Praxis

NTFS-Rechte auditieren: Get-Acl und icacls im Vergleich

8. Juli 2026·7 Min. Lesezeit·IT-xPerts.GmbH

„Können Sie uns bis Freitag eine Liste aller Berechtigungen auf dem Projektlaufwerk liefern?" Diese Anfrage – vom Auditor, vom Datenschutzbeauftragten oder aus der eigenen GeschĂ€ftsleitung – trifft viele Admin-Teams unvorbereitet. Der Windows Explorer zeigt Rechte nur Ordner fĂŒr Ordner, eine konsolidierte Übersicht ĂŒber hunderte Freigaben und verschachtelte AD-Gruppen fehlt. Wer NTFS-Berechtigungen regelmĂ€ĂŸig auditieren muss, kommt an PowerShell nicht vorbei. Die Frage ist nicht ob, sondern wie man Get-Acl und icacls sinnvoll kombiniert, ohne sich in unvollstĂ€ndigen oder falsch interpretierten Reports zu verlieren.

Das Problem: Sichtbare Rechte sind nicht die effektiven Rechte

Die Eigenschaften-Dialoge in Windows zeigen die Access Control List (ACL) eines einzelnen Objekts. Was sie nicht liefern: einen Überblick ĂŒber mehrere hundert Unterordner gleichzeitig, eine Trennung zwischen vererbten und explizit gesetzten EintrĂ€gen und schon gar keine Auflösung verschachtelter Gruppenmitgliedschaften. Genau diese drei Punkte sind fĂŒr ein Audit relevant – und genau hier scheitert die grafische OberflĂ€che.

PowerShell schließt die erste LĂŒcke: Das Cmdlet Get-Acl liefert das Security-Descriptor-Objekt einer Ressource inklusive der kompletten DACL (Discretionary Access Control List), also aller EintrĂ€ge, wer welchen Zugriff auf eine Datei oder einen Ordner hat1. Kombiniert mit Get-ChildItem -Recurse lĂ€sst sich daraus ein rekursiver Bericht ĂŒber einen ganzen Freigabebaum erzeugen.

Ursache: Gewachsene ACLs und verschachtelte Gruppen

In der Praxis entstehen unĂŒbersichtliche Berechtigungsstrukturen selten durch einen einzelnen Fehler, sondern durch Jahre gewachsener Ad-hoc-Änderungen: direkte Benutzerrechte statt Gruppenrechte, deaktivierte Vererbung auf einzelnen Unterordnern, „temporĂ€re" Freigaben fĂŒr ausgeschiedene Projektmitarbeiter. Das BSI beschreibt im Baustein ORP.4 „IdentitĂ€ts- und Berechtigungsmanagement" genau dieses Risiko: Ohne geregelte Prozesse fĂŒr Vergabe, Änderung und Entzug von Rechten sammeln sich ĂŒber die Zeit Berechtigungen an, die niemand mehr zuordnen kann.

Ein zweiter Faktor ist die AD-Gruppenverschachtelung selbst. Eine Datei kann formal nur zwei oder drei Gruppen in der ACL stehen haben – de facto aber Hunderten von Benutzern zugĂ€nglich sein, wenn diese Gruppen wiederum verschachtelt sind. Get-Acl löst diese Verschachtelung nicht auf; es zeigt nur die direkten ACL-EintrĂ€ge, nicht die daraus resultierenden effektiven Rechte einzelner Personen. FĂŒr eine vollstĂ€ndige Auflösung braucht es zusĂ€tzlich AD-Gruppenmitgliedschaften (Get-ADGroupMember -Recursive) oder spezialisierte Tools.

Lösung: Get-Acl und icacls gezielt kombinieren

Get-Acl und icacls lösen unterschiedliche Teilprobleme. Get-Acl ist ein natives PowerShell-Objekt und eignet sich hervorragend fĂŒr strukturierte Reports und CSV-Exporte. icacls ist ein Kommandozeilentool, das laut Microsoft-Dokumentation DACLs anzeigt, Ă€ndert, sichert und wiederherstellt2 – und eignet sich besonders fĂŒr StichprobenprĂŒfung, Backup vor Änderungen und das Auffinden aller Objekte mit einer bestimmten SID (/findsid).

Schritt 1: Rekursiver ACL-Export als Audit-Grundlage

$Root = "D:\Freigaben\Projekte"
Get-ChildItem -Path $Root -Recurse -Directory |
  ForEach-Object {
    $acl = Get-Acl -Path $_.FullName
    foreach ($entry in $acl.Access) {
      [PSCustomObject]@{
        Pfad             = $_.FullName
        IdentitÀt        = $entry.IdentityReference
        Recht            = $entry.FileSystemRights
        Typ              = $entry.AccessControlType
        Vererbt          = $entry.IsInherited
        VererbungsFlags  = $entry.InheritanceFlags
      }
    }
  } | Export-Csv -Path "C:\Audit\ntfs-rechte.csv" -NoTypeInformation -Encoding UTF8

Schritt 2: Explizite (nicht vererbte) Rechte isolieren

FĂŒr ein Audit sind vor allem die EintrĂ€ge relevant, die von der Standardvererbung abweichen – sie markieren SonderfĂ€lle, die dokumentiert oder bereinigt werden sollten:

Import-Csv "C:\Audit\ntfs-rechte.csv" |
  Where-Object { $_.Vererbt -eq "False" } |
  Sort-Object Pfad |
  Export-Csv "C:\Audit\ntfs-rechte-explizit.csv" -NoTypeInformation -Encoding UTF8

Schritt 3: Stichprobenverifikation mit icacls

FĂŒr EinzelprĂŒfungen und als Backup vor Änderungen ergĂ€nzt icacls den PowerShell-Export sinnvoll:

REM Rechte eines Ordners inkl. Unterordner sichern (vor Änderungen)
icacls "D:\Freigaben\Projekte" /save D:\Audit\projekte.aclbak /T /C

REM Alle Objekte finden, in denen eine bestimmte SID/Gruppe explizit vorkommt
icacls "D:\Freigaben\Projekte" /findsid *S-1-5-21-XXXXXXXXXX-1234 /T

Der Parameter /save sichert die DACLs in eine Datei, die sich spĂ€ter mit /restore wiederherstellen lĂ€sst – praktisch als Rollback-Absicherung vor grĂ¶ĂŸeren Bereinigungen. /findsid beantwortet gezielt die Auditor-Frage „Wo genau hat diese Gruppe noch Zugriff?", ohne den kompletten Baum manuell zu durchsuchen.

Praxis: Checkliste fĂŒrs nĂ€chste Fileserver-Audit

  • Rekursiven ACL-Export fĂŒr alle Freigaben planen (nachts, außerhalb der Kernarbeitszeit bei großen Volumina)
  • Explizite (nicht vererbte) EintrĂ€ge separat auswerten und einzeln begrĂŒnden
  • Direkte Benutzerrechte statt Gruppenrechte identifizieren und in AGDLP-Struktur ĂŒberfĂŒhren
  • Verschachtelte Gruppen mit Get-ADGroupMember -Recursive auflösen, bevor „effektive Rechte" kommuniziert werden
  • Vor jeder Bereinigung ein icacls /save-Backup der betroffenen Pfade anlegen
  • Reports revisionssicher ablegen (Datum, Verantwortlicher, Freigabe-Scope) als Nachweis fĂŒr Rezertifizierung
  • Wiederholung terminieren – ein einmaliger Export ersetzt keinen laufenden Prozess

Einordnung: Was das fĂŒr Compliance-Nachweise bedeutet

Ein PowerShell-Report ersetzt kein vollstĂ€ndiges Berechtigungskonzept, liefert aber die Rohdaten, die ein Nachweis braucht. ISO/IEC 27002:2022 verlangt in Control 8.3 „Information Access Restriction", dass Zugriff auf Informationen gemĂ€ĂŸ einer themenspezifischen Zugriffsrichtlinie eingeschrĂ€nkt wird – ein regelmĂ€ĂŸiger, dokumentierter ACL-Export ist ein naheliegender Beleg dafĂŒr, dass diese EinschrĂ€nkung tatsĂ€chlich gelebt wird und nicht nur auf dem Papier existiert. NIST SP 800-53 verlangt in AC-2 vergleichbar wiederkehrende KontoprĂŒfungen, deren Frequenz sich am Risiko der Systeme orientiert – bei privilegierten Zugriffen typischerweise quartalsweise. FĂŒr beide Rahmenwerke gilt: Ohne exportierbare, versionierte Berichte bleibt jede Aussage zur Rechtevergabe unbelegte Behauptung.

Fazit

Get-Acl und icacls sind keine Konkurrenten, sondern ergĂ€nzen sich: Get-Acl liefert strukturierte, auswertbare Massendaten fĂŒr laufende Reports und CSV-Exporte, icacls liefert gezielte EinzelprĂŒfung, SID-Suche und ein einfaches Backup-/Restore-Verfahren fĂŒr DACLs. Wer beide Werkzeuge in einen wiederkehrenden Prozess einbettet – inklusive Filterung auf explizite Rechte und Auflösung verschachtelter Gruppen – hat die technische Grundlage fĂŒr Rezertifizierung und Auditnachweis geschaffen. Die eigentliche Arbeit beginnt danach: die gefundenen Abweichungen zu bewerten und zu bereinigen.

Ein Beitrag pro Woche — ins Postfach

Kompaktes Praxiswissen zu Berechtigungs- und Zugriffsmanagement.

Newsletter abonnieren

Quellen: Microsoft Learn – Get-Acl (Microsoft.PowerShell.Security)1; Microsoft Learn – icacls-Befehlsreferenz2; BSI IT-Grundschutz-Kompendium, Baustein ORP.4 „IdentitĂ€ts- und Berechtigungsmanagement"; ISO/IEC 27002:2022, Control 8.3 „Information Access Restriction"; NIST SP 800-53 Rev. 5, Control AC-2 „Account Management".
Hinweis: KI-gestĂŒtzt erstellt, redaktionell geprĂŒft.