derpue
Goto Top

Verzeichnisse auf denen Jeder o. everyone berechtigt ist via Script ausfindig machen und auflisten.

Hallo zusammen,

vielleicht hat jemand von Euch eine Idee,
Ich suche ein "VBScript", "PS1" oder "cmd" mit der ich in einer Verzeichnisstruktur bis in die letzte Verzeichnisebene mit allen Dateien und Verzeichnisse auf die Berechtigungsgruppe "Jeder/everyone" untersucht und diese Verzeichnisse auflistet.
Zur Sicherung und wiederherstellung von berechtigungsgruppen nutze ich sonst iCacls, das bietet mir allerdings nicht die Möglichkeit explizit nach Gruppen zu suchen und mir diese in eine .txt oder ähnliches aufzulisten.

Über Vorschläge freue ich mich schon und bedanke mich im voraus,
Wünsche Euch schonmal ein schönes WE

Viele Grüße
DerPue

Content-Key: 223250

Url: https://administrator.de/contentid/223250

Printed on: April 18, 2024 at 23:04 o'clock

Member: DerWoWusste
DerWoWusste Nov 29, 2013 at 14:25:49 (UTC)
Goto Top
Hi.

Wäre schon möglich mit icacls:
icacls d: /t /c |findstr Everyone

Falls deutsches System, muss nach "Jeder" (großes J) gesucht werden.
Member: aqui
aqui Nov 29, 2013 at 14:50:01 (UTC)
Goto Top
…ansonsten wohl eher was für die Rubrik "Batch & Shell" hier im Forum…?!
Member: colinardo
colinardo Nov 29, 2013, updated at Nov 30, 2013 at 18:54:47 (UTC)
Goto Top
Hallo DerPue,
folgendes Script gibt dir alle Ordner und Dateien aus auf denen "Jeder/everyone" Zugriff haben inkl. welchen Rechten.
$suchordner = "C:\Temp"  
$objects = Get-ChildItem -Path $suchordner -Recurse
$arrPerm = @()
foreach ($obj in $objects){
    $rules = (get-acl $obj.FullName).Access
    foreach($rule in $rules){
        if ($rule.IdentityReference -match "(Jeder|everyone)" -and $rule.IsInherited -eq $false){  
            $arrPerm += New-Object PSObject -Property @{Ordner=$obj.FullName;Identity=$rule.IdentityReference;Typ=$rule.AccessControlType;Rechte=$rule.FileSystemRights;Vererbt=$rule.IsInherited}
        }
    }
}
$arrPerm | ft Ordner,Identity,Typ,Rechte,Vererbt
Im Moment listet es nur nicht vererbte Rechte auf, so siehst du besser wo die entsprechende ACL hinterlegt ist. Wenn du das nicht willst änderst du Zeile 7 folgendermaßen ab:
  if ($rule.IdentityReference -match "(Jeder|everyone)"){
Dann listet es auch die vererbten Dateien und Ordner auf.

Wie immer der Hinweis: Sollten Pfade mit dabei sein die die max. Zeichenzahl von 260 überschreiten wird das Script einen Fehler auswerfen. Leider hat hier blöderweise die Powershell bzw. das .NET-Framework eine Beschränkung eingebaut. Ich warte schon lange darauf das MS das endlich behebt ...

Grüße Uwe
Member: DerPue
DerPue Dec 02, 2013 at 07:20:37 (UTC)
Goto Top
Hallo Uwe,

vielen Dank für das Script. Funktioniert einwandfrei.