markusbausb
Goto Top

Effektive Berechtigung des angemeldeten Users auf bestimmte Dateien oder Verzeichnisse aus Batch ermitteln

Hallo zusammen.

Ich habe mal eine Frage zur Batchprogrammierung. Und zwar bin ich in der Situation die effektive Berechtigung eines angemeldeten Users auf bestimmte Dateien und Ordner auslesen zu müssen und basierend darauf im Batch zu verzweigen. Aktuell habe ich noch keine richtige Idee wie ich das anstellen soll. Hat jemand von euch einen Vorschlag?

Bin für jede Hilfe dankbar.

VG
Markus

Content-Key: 600109

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

Printed on: May 22, 2024 at 21:05 o'clock

Member: emeriks
Solution emeriks Aug 28, 2020 at 09:03:11 (UTC)
Goto Top
Hi,
per Batch wird das nicht gehen. Max. mit PowerShell.

Aber auch hier nicht auf dem Silbertablett. Man müsste in etwa so:
  • die verschachtelte Gruppenmitgliedschaft des Benutzers auslesen
  • bestimmen, welche der ermittelten Gruppen für den Zielserver zutreffen (Stichworte "multi domain" und "group scope")
  • dann die ACL des betreffenden Ordners auslesen
  • mit der ermittelten Gruppenmitgliedschaft zusammenführen

oder
  • ACL auslesen
  • für jede einzelne ACE für die betreffende Gruppe die Mitglieder verschachtelt auflösen
  • wenn aktueller Benutzer dabei, dann gilt die ACE für diesen Benutzer

Dabei dann noch Verweigerungen und Gewährungen unterscheiden und ggf. die generellen Rechte in feingranulare aufschlüsseln.

E.
Member: DerWoWusste
Solution DerWoWusste Aug 28, 2020 at 09:05:09 (UTC)
Goto Top
Nimm https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk damit passt das auch in Batch und das recht unkompliziert.
Member: LeeX01
LeeX01 Aug 28, 2020 at 09:19:27 (UTC)
Goto Top
Das was DerWoWusste sagt aber schau mal ob du nicht noch eine ältere Sprache findest face-smile
Member: chkdsk
Solution chkdsk Aug 28, 2020 updated at 10:31:20 (UTC)
Goto Top
Sowas hier für den Anfang vielleicht?
Der Account im Script muss dann entsprechend anpasst werden.
$CurrentDate = Get-Date
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy')  

Function Get-Folder($initialDirectory)

{
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null  

    $Ordnername = New-Object System.Windows.Forms.FolderBrowserDialog
    $Ordnername.Description = "Ordner auswählen"  
    $Ordnername.rootfolder = "MyComputer"  

    if($Ordnername.ShowDialog() -eq "OK")  
    {
        $Ordner += $Ordnername.SelectedPath
    }
    return $Ordner
}

$folder = Get-Folder
Write-Host
Write-Host
Write-Host "Berechtigungsstruktur wird gelesen"  
Write-Host "Liste wird erstellt. Bitte warten..."  

Get-ChildItem –Path $folder –Recurse -Directory | Get-NTFSAccess |  ?{$_.Account.Sid -notin @('S-1-5-18','S-1-5-32-544')} | select Fullname,Account,AccessRights,InheritedFrom | export-csv -Path C:\temp\Berechtigungsstruktur_$CurrentDate.csv -NoType -Encoding UTF8 -Delimiter ";"   
Member: MarkusBausB
MarkusBausB Sep 01, 2020 at 17:44:01 (UTC)
Goto Top
Danke für die Lösungsvorschläge. Ich werde mir das genauer ansehen wenn ich von meiner Dienstreise zurück bin.

VG
Markus