none
NTFS Berechtigungs-Report RRS feed

  • Frage

  • Hallo Zusammen,

    ich würde gern mal ein Report einer Berechtigungsstruktur machen..leider scheitere ich ein wenig.

    Ein bereits vorhandener Script von Peter Kriegel hat mir schon viel geholfen, doch wäre für mich interessant, ob ich dem Script sagen kann wenn die Berechtigungen von Ebene 1 - 10 komplett vererbt ist, er mir auch nur die erste ebene/Pfad und die berechtigten User(direkte Berechtigung)/Gruppen aus gibt. Und nicht Jede Ebene mit den gleichen Berechtigungen.

    Hier mal der Script von Peter Kriegel, etwas von mir abgewandelt:

    $path = "\\server01.domain.local\Share"
    $list = get-childitem $path |get-childitem |where {$_.Psiscontainer}|foreach-object {$_.fullname}
    Add-Type -AssemblyName System.DirectoryServices.AccountManagement
    $AcM = [System.DirectoryServices.AccountManagement.ContextType]::Domain
    
    foreach ($folder in $list) {
    Write-Host "`n`rFolderpath: " $folder
    $ACL = Get-Acl $list | ForEach-Object { $_.Access } | Group-Object IdentityReference
    
    	foreach ($ACLobject in $ACL) {
    	 $objSearch = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($AcM,$ACLobject.name)
    	  If ($objSearch.StructuralObjectClass -eq "group") {
    	  write-host "`n`rGruppe:" $ACLobject.name "`n`r--------------------------------------"
    	  Foreach ($member in $objSearch.Members) {$member.name}
    	 }
    	 else {
    	 write-host "`n`User:" $ACLobject.name "`n`r"
     }
    }
    }

    Dieser Script listet nun alle Folder in allen Ebenen. Doch wie gesagt wenn alle Berechtigungen vererbt sind , soll er nur die obere Ebene nehmen und dazu die Berechtigungs Gruppen aufzeigen.

    Beispiel der Ausgabe im Falle das allen Unterordnern die Berechtigung veerbt wurde und sich nichts in der untersten Ebene geändert hat:

    Pfad: C:\Temp
    ---------------------------------------------
    Gruppen: Administrator
    Gruppen: Domain User
    User: Max.Mustermann
    User: Ellen Bogen

    Sollte es eine Änderung beispielsweise in Ebene 4 sein (eine Gruppe fällt weg) dann sollte er diese natürlich wieder mit ausgeben. Wie ist das möglich?

    Vorab besten Dank und viele Grüße

    Thomas




    • Bearbeitet Digiflex Montag, 16. Juli 2012 14:18
    Montag, 16. Juli 2012 14:15

Antworten

  • Hallo,

    letzte Woche habe ich die 2.0 Beta vom File System Security PowerShell Module hochgeladen (

    http://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85

    ). Hier sind nun ein paar cmdlets neu, die extra für Reporting gebaut wurden.

    Get-SimpleAccess: Die Aufgabenstellung war, die Berechtigungen vereinfacht dazustellen (nur lesen, schreiben, löschen), damit sie auch von Auditoren nachvollzogen werden können. Es sollen nur die Berechtigungen ausgegeben werden, die sich gegenüber dem Parent unterscheiden.

    Get-SimpleEffectiveAccess: Macht im Grunde das gleiche aber liest nicht die statisch gesetzten Berechtigungen aus, sondern die effektiven Rechte für einen bestimmten Benutzer.

    Beide Befehle gibt es auch als Show-* Version, die dann eine UI anzeigen und die Daten als TreeView präsentieren.

    Vielleicht tut das schon viel von dem, was gebraucht wird. Wenn nicht, bitte Feedback und vielleicht läßt sich die eine oder andere Anforderung noch integrieren.


    -Raimund


    Montag, 16. Juli 2012 19:43

Alle Antworten

  • Hallo Thomas !

    Das mit der NTFS Berechtigungs-Vererbung ist so eine Sache.

    Stell die mal ein Ordner vor auf dem Berechtigungen gesetzt wurden sind.
    Dieser Ordner hat 20 Unterordner (Kinder).
    Wenn du nun die Ordner herabsteigst sind die ersten 10 Kind-Ordner auf Vererbung gesetzt. Der 11. Ordner unterbricht die Vererbung  und setzt seine eigenen rechte. Die ersten 3 Kind-Ordner von dem Ordner 11 erben die Berechtigungen. Der Ordner 15 Unterbricht wieder die Vererbung und hat eigene Rechte und die…..so weiter… so weiter….
    Ebenfalls kann jede Datei die Vererbung unterbrechen!

    Du siehst schon dass man hier einen anderen Ansatz verfolgen muss.

    Die Dateien lassen wir mal außer Acht.

    Aus meiner Sicht würde dies nur gehen, wenn man (durch Rekursion)  ganz Tief bis zum Letzten Kind in der Hierarchie hinuntersteigt. Beim untersten Ordner angekommen steigt man wieder herauf und meldet nur Ordner die die Vererbung unterbrechen (also eigene Berechtigungen setzen).

    Den Report schreibt man außerdem am Besten in eine Datenbank dann kann man bequem Filtern weelchr Gruppe(n) wo Zugriff haben.
    Ebenso könnte man dadurch auch herausfinden, ob eine Gruppe die im AD vorhanden ist, überhaupt noch gebraucht (eingesetzt) wird.

    Raimund der auch ab und zu hier im Forum ist hat ja im Microsoft Scripting Repository ein Modul veröffentlicht das NTFS Rechte sehr gut verarbeitet.

    Vielleicht hat er ja noch eine bessere Idee oder jemand anders!?

    P.S. für solche Zwecke gibt es auch Tools von Wininternals (Sysinternals) AccessCheck und AccessEnum.
    http://technet.microsoft.com/de-de/sysinternals/bb842062


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Montag, 16. Juli 2012 15:15
  • Hallo,

    letzte Woche habe ich die 2.0 Beta vom File System Security PowerShell Module hochgeladen (

    http://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85

    ). Hier sind nun ein paar cmdlets neu, die extra für Reporting gebaut wurden.

    Get-SimpleAccess: Die Aufgabenstellung war, die Berechtigungen vereinfacht dazustellen (nur lesen, schreiben, löschen), damit sie auch von Auditoren nachvollzogen werden können. Es sollen nur die Berechtigungen ausgegeben werden, die sich gegenüber dem Parent unterscheiden.

    Get-SimpleEffectiveAccess: Macht im Grunde das gleiche aber liest nicht die statisch gesetzten Berechtigungen aus, sondern die effektiven Rechte für einen bestimmten Benutzer.

    Beide Befehle gibt es auch als Show-* Version, die dann eine UI anzeigen und die Daten als TreeView präsentieren.

    Vielleicht tut das schon viel von dem, was gebraucht wird. Wenn nicht, bitte Feedback und vielleicht läßt sich die eine oder andere Anforderung noch integrieren.


    -Raimund


    Montag, 16. Juli 2012 19:43
  • @Thomas
    Ich habe da nochmal überlegt ...
    Einfach nur zu schauen ob ein Ordner die Vererbung unterbricht und eigene Rechte setzt reicht nicht aus!
    Ein Ordner kann die Vererbung übernehmen und weiterreichen, trotzdem kann der Ordner andere Spezielle Berechtigungen haben!!! (siehe Bild)
    Siehe :
    3.2.1.5 InheritanceFlags und 3.2.1.6 PropagationFlags
     http://www.powershellpraxis.de/Datei-und-Verzeichnisberechtigungen.1174.0.html

    NTFS vererbung Spezielle Berechtigung: Gäste nicht geerbt!

    @ Raimund
    Wie geht dein Modul mit solchen Situationen um ?
    Eigentlich Fügt der Ordner der Vererbung etwas hinzu, also müssen immer alle ACL mit dem Parent Folder verglichen werden!?
    Hast du für ein Share- NTFS Security Audit einen Beispiel Code (Ausgabe als CSV)? Wie würdest du es machen?


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '

    Dienstag, 17. Juli 2012 06:56
  • Hallo Peter, hallo Raimund danke für eure bisherigen Beitträge.

    Ich hatte das mir schon gedacht das dies auf einige Schwierigkeiten stößt. Das Modul von Raimund hatte ich ebenfalls schon entdeckt aber noch nicht getestet. Da ich doch erstmal lieber im Forum Frage bevor ich immer gleich ein Modul importiere.

    @ Peter: bezüglich deines letzten Beitrages hast du natürlich völlig recht..Der Script bzw. das Modul müsste natürlich immer mit der vorhergehenden Ebene vergleichen bzw. jede Berechtigungsänderung dokumentieren. Die Tools von Wininternals (Sysinternals) AccessCheck und AccessEnum scheinen aber nicht für 2008R2 kompatibel zu sein oder? Hast du damit unter 2K8R2 Erfahrung?

    @Raimund: Diese Show version der das ganze als Tree listet, klingt sehr interessant. Doch werden da zu jedem Folder auch die berechtigten Gruppen und Einzel-User gelistet/dokumentiert?

    Gruß
    Thomas



    • Bearbeitet Digiflex Dienstag, 17. Juli 2012 07:28
    Dienstag, 17. Juli 2012 07:24
  • Am besten du Probierst das Modul von Raimund einfach mal aus. Ich werde es mal testen.

    Die "stumpfe" vorgehensweise, wo "nur" die Vererbung getested wird, kannst du dem folgenden Blog entnehmen:
    http://jfrmilner.wordpress.com/2011/05/01/audit-ntfs-permissions-powershell-script/

    ? { $_.IsInherited -eq $false }

    Ein andere vorgehensweise (ohne Vererbung):
    http://www.jonathanmedd.net/2011/12/reporting-on-windows-file-server-shares-and-ntfs-permissions-with-powershell.html


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '

    Dienstag, 17. Juli 2012 09:20
  • Die erwähnten cmdlets schauen nicht nur, ob die Vererbung unterbrochen ist, sondern vergleichen immer die komplette ACL.

    Aber richtig, einfach mal testen, das sollte nicht mehr als 15 Minuten beanspruchen: dir -recurse | Show-SimpleAccess


    -Raimund

    Dienstag, 17. Juli 2012 11:50
  • Also ich habe es nun getetestet und ich muss sagen, es macht wirklich einen tollen Eindruck.

    Es wäre natürlich schön wenn man den .csv Export wieder mit der grafischen GUI öffnen könnte. Nächstes Problem habe ich dann wieder beim öffnen der .csv festgestellt. Bei großen und tiefgehenden Berechtigungskonstrukten, kommt man mall schnell auf über 1Mio Datensätze und das kann Excel leider nicht öffnen. Ist natürlich ein thema bei Excel und nicht dem Modul von Raimund geschuldet ;)

    Ich werde das Teil jetzt in eine Datenbank pumpem und anschließend auswerten..ich denke damit kann ich arbeiten!! Danke erst Mal dafür! ;)

    @ Peter: Schon Zeit gehabt das Modul von Raimund zu testen?Eindrücke?

    Gruß
    Thomas

    PS: @Raimund: Ein weiterer Anreiz wäre natürlich auch, wenn die Daten beim Exportieren auch als Tree Version in die .csv geschrieben wird. :) Dennoch tolle Arbeit bei dem Modul!



    • Bearbeitet Digiflex Donnerstag, 19. Juli 2012 07:08
    Donnerstag, 19. Juli 2012 07:05
  • @Digiflex

    Ich habe das Modul getestet ! Es hat noch ein paar (kleinere) Bugs die ich Raimund schon reported habe.
    Aber es ist ja noch Beta da ist das i.O.
    Ansonnsten fehlen mir da noch ein paar Funktionen. Die man sich aber schnell selbst bauen kann.
    Sieh hier:
    NTFS Vererbung abschalten
    http://social.technet.microsoft.com/Forums/de-DE/powershell_de/thread/b43558a1-8b95-4adc-9d47-ee9ebebc4d44


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Donnerstag, 19. Juli 2012 10:46
  • Da ich das momentan nur zum reporten genommen habe, bin ich bis dahin noch nicht gekommen. :) Aber klar sollte mit rein!

    Im Reportingumfeld wäre es dennoch sehr schön wenn man die csv wieder mit der Show-Acces GUI öffnen könnte. Ließe sich optisch besser präsentieren als eine csv im Excel zu öffnen mit 1Mio Datensätzen ^^ Das Modul war sicherlich nicht dafür gedacht aber würde mich dennoch freuen, wenn es da eine Möglichkeit gibt dieses Feature im nächsten Release zu haben :)

    Gruß
    Thomas

    Freitag, 20. Juli 2012 07:20
  • Raimund seine E-Mail Adresse hast du ja (steht auf der Downloadseite des Moduls)

    Er ist für Bugreports und vorschläge sehr offen!

    Ich "nerve" ihn auch schon ;-)))


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Freitag, 20. Juli 2012 08:38
  • Hab ich getan! ;)

    VG
    Thomas

    Mittwoch, 25. Juli 2012 08:24