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

Url: https://administrator.de/forum/effektive-berechtigung-des-angemeldeten-users-auf-bestimmte-dateien-oder-verzeichnisse-aus-batch-ermitteln-600109.html

Ausgedruckt am: 10.04.2025 um 17:04 Uhr

emeriks
Lösung emeriks 28.08.2020 um 11:03:11 Uhr
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.
DerWoWusste
Lösung DerWoWusste 28.08.2020 um 11:05:09 Uhr
Goto Top
Nimm https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk damit passt das auch in Batch und das recht unkompliziert.
LeeX01
LeeX01 28.08.2020 um 11:19:27 Uhr
Goto Top
Das was DerWoWusste sagt aber schau mal ob du nicht noch eine ältere Sprache findest face-smile
chkdsk
Lösung chkdsk 28.08.2020 aktualisiert um 12:31:20 Uhr
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 ";"   
MarkusBausB
MarkusBausB 01.09.2020 um 19:44:01 Uhr
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