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-ID: 223250

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

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

DerWoWusste
DerWoWusste 29.11.2013 um 15:25:49 Uhr
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.
aqui
aqui 29.11.2013 um 15:50:01 Uhr
Goto Top
…ansonsten wohl eher was für die Rubrik "Batch & Shell" hier im Forum…?!
colinardo
colinardo 29.11.2013, aktualisiert am 30.11.2013 um 19:54:47 Uhr
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
DerPue
DerPue 02.12.2013 um 08:20:37 Uhr
Goto Top
Hallo Uwe,

vielen Dank für das Script. Funktioniert einwandfrei.