Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

500 Ordner - NTFS Berechtigungen mit wenigen Klicks ändern

Frage Microsoft Windows Server

Mitglied: hamspirit

hamspirit (Level 1) - Jetzt verbinden

21.11.2013 um 10:34 Uhr, 6719 Aufrufe, 6 Kommentare, 1 Danke

Hallo zusammen,

eine Fileserver-Migration steht an.
Der neue Fileserver bestitz 15 Ordner auf der ersten Ebene und darunter zwei weitere Ebenen, die den Datenbestand strukturieren.
In der dritten Ebene sollen nun unterschiedliche Berechtigungen zum Einsatz kommen. In Summe sind das knapp 500 Ordner, die in der dritten Ebene liegen.

Mir widerstrebt es jetzt in jedem Ordner die Rechtevererbung von Hand zu unterbrechen und danach die entsprechenden AD-Gruppen zu berechtigen.

Gibt es eine Möglichkeit, um diese Vererbung der NTFS-Rechte ohne viel Klickerei zu unterbrechen?
Die Gruppen den Rechten hinzuzufügen wäre ja noch ok. Aber diese elendige Klickerei zum Unterbrechen der Vererbung nervt ungemein.

Ich könnte mir vorstellen, die Ordner Strukturen in eine Textdatei zu packen und dann ein Skript darüber rennen zu lassen. Ich habe nur keine Ahnung, wie das dann aussehen muss, damit die Vererbung danach unterbrochen ist.

Besten Dank vorab!

Grüße
HamSpirit
Mitglied: colinardo
21.11.2013, aktualisiert um 10:43 Uhr
Hallo HamSpirit,
hatten wir hier schon mehrfach. Mit Powershell und den CMDLets get-acl und set-acl kein Problem.
Siehe dazu auch folgenden Beitrag: http://www.administrator.de/forum/powershell-zugriffsberechtigungen-von ...
Ansonsten liefert eine Suche hier im Forum mit folgendem Suchstring die gewünschten Treffer :
"powershell acl"

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
21.11.2013, aktualisiert um 11:12 Uhr
Um es dir etwas einfacher zu machen, hier ein Script das du dazu hernehmen könntest:
Du legst für einen Ordner im System die gewünschten Berechtigungen fest die du auf die anderen Ordner übertragen möchtest, und trägst den Pfad in Zeile 1 des Scripts ein. Diese Berechtigungen werden dann auf alle Unterordner für den Pfad den du in Zeile 2 angibst angewendet inklusive Unterbrechung der Vererbung.
01.
$sourceACL = get-acl -Path "C:\Temp\source" 
02.
$startFolder = "C:\Zielordner" 
03.
 
04.
#Vererbung des ACL-Objektes deaktivieren (Parameter 1) bestehende Berechtigungen erhalten (Parameter 2) 
05.
$sourceAcl.SetAccessRuleProtection($true,$true) 
06.
 
07.
#Alle Unterordner (erste Ebene des Ordners) 
08.
$allSubFolders = dir $startFolder | ?{$_.PSIsContainer} 
09.
 
10.
#Für alle Unterordner der ersten Ebene die ACLs durch das des $sourceACL-Objektes ersetzen 
11.
foreach($folder in $allSubFolders){ 
12.
    Set-Acl -Path $folder.FullName -AclObject $sourceACL 
13.
}
Grüße Uwe
Bitte warten ..
Mitglied: hamspirit
22.11.2013 um 07:36 Uhr
Danke für diese Hilfestellung, Uwe.
Die Vererbung habe ich für die besagten Ordner nun unterbrochen. Das erspart einem doch viele Stunden Klickerei. ;)

Wie komplex wird es, wenn ich zwei Textdateien nutzen will, um Berechtigungen zuzuweisen.
In Textdatei1 sollen zeilenweise Ordner stehen. Bsp: d:\freigabe\Ordner\bla\bla
In Textdatei2 sind passend dazu Gruppen aus dem AD aufgeführt werden.
Ziel soll es sein, dass die AD-Gruppe aus Zeile 1 aus Textdatei2 Berechtigungen auf den Ordner aus Zeile 1 aus Textdatei1 erhält.

Habe noch keine Möglichkeit gefunden, Informationen aus zwei Dateien zusammenfließen zu lassen. Oder kann man das auf andere Weise erledigen?

Nochmals vielen Dank und beste Grüße
HamSpirit
Bitte warten ..
Mitglied: colinardo
22.11.2013, aktualisiert um 09:45 Uhr
Hallo Hamspirit,
ich würde das ganze in eine einzelne CSV-Datei packen die dann so aussehen könnte:
"FREIGABE";"BERECHTIGUNGEN" 
"d:\freigabe\Ordner\bla\bla";"DOMAIN\Group1,DOMAIN\Group2,DOMAIN\Group3"
also in der ersten Spalte der Ordner, und in der zweiten Spalte mit Komma voneinander getrennt die Gruppen. So hat man alles zusammen in einer Datei und muss nicht immer hin und her springen... Deine Variante ist auch kein Problem, aber ich sehe keinen Grund das zu trennen.

Wenn du willst bau ich dir dazu das entsprechende Script.

Was auch noch benötigt wird sind dann die entsprechenden Zugriffsrechte (R/W,Vollzugriff, etc)

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
22.11.2013 um 10:27 Uhr
Zu meinem Beispiel mit der CSV-Datei kannst du folgendes Script hernehmen:
01.
#CSV-Datei 
02.
$csvPermissions = import-csv "C:\Temp\permissions.txt" -Delimiter ";" 
03.
 
04.
foreach($line in $csvPermissions){ 
05.
    #Freigabeordner 
06.
    $folder = $line.Freigabe 
07.
    #Berechtigungen 
08.
    $groups = $line.Berechtigungen.Split(",") 
09.
    #Wenn Ordner existier 
10.
    if ((Test-Path $folder)){ 
11.
        #Wenn überhaupt Berechtigungen angegeben sind 
12.
        if ($groups.length -gt 0){ 
13.
            #Neues leeres ACL-Objekt erzeugen 
14.
            $newACL = New-Object System.Security.AccessControl.DirectorySecurity 
15.
            #Vererbung der ACL deaktivieren 
16.
            $newACL.SetAccessRuleProtection($true,$false) 
17.
            #Für jede Gruppe die entsprechende AccessRule zur ACL hinzufügen 
18.
            for ($i = 0 ; $i -lt $groups.length; $i++){ 
19.
                #Gebe der Gruppe "Vollzugriff" und vererbe diese Rechte an Unterordner und Objekte 
20.
                $perm = $groups[$i],"FullControl","ContainerInherit,ObjectInherit","None","Allow" 
21.
                $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule $perm 
22.
                $newACL.AddAccessRule($objACE)  
23.
24.
            # Schreibe die ACL 
25.
            set-acl -Path $folder -AclObject $newACL 
26.
27.
    }else{ 
28.
        #Ordner wurde nicht gefunden 
29.
        echo "Der Ordner '$folder' existiert nicht unterhalb von '$startFolder'!" 
30.
31.
     
32.
}
Die Formatierung der CSV-Datei sollte wie oben geschrieben so aussehen (inklusive der Überschriften):
"Freigabe";"Berechtigungen"  
"d:\freigabe\Ordner\bla\bla";"DOMAIN\Group1,DOMAIN\Group2,DOMAIN\Group3"
Bin jetzt erst mal hier im Beispiel von "Vollzugriff" Rechten für die Gruppen ausgegangen, das lässt sich aber anpassen ...

Grüße Uwe
Bitte warten ..
Mitglied: hamspirit
26.11.2013 um 10:21 Uhr
Uwe, vielen Dank.

Das Unterbrechen der Vererbung habe ich nun mit diesem Script erledigt:

01.
for /f "tokens=*" %%a in (e:\folderlist2.txt) do ( 
02.
  icacls %%a /inheritance:d 
03.
)

Für die Vergabe von Berechtigungen auf die verschiedenen Ordner kam dieses Powershell-Script zum Einsatz:

01.
$Path = @() 
02.
$Group = @() 
03.
 
04.
 
05.
$Permissions = Import-Csv E:\permissions.csv -delimiter '|' 
06.
 
07.
    ForEach ($line in $Permissions) 
08.
 
09.
10.
        write-host $line 
11.
        $acl = Get-Acl $line.Path 
12.
        $acl.SetAccessRuleProtection($True, $False) 
13.
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($line.Group,"ReadAndExecute", "ContainerInherit, ObjectInherit", "None", "Allow") 
14.
        $acl.AddAccessRule($rule) 
15.
        Set-Acl $line.Path $acl 
16.
       		}
Die Permissions.csv bestand aus:

01.
Path|Group 
02.
E:\Ordner1\Ordner2\|Meine_AD_Gruppe
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Linux Userverwaltung
Synology Ordner Berechtigungen (9)

Frage von DauJoe zum Thema Linux Userverwaltung ...

Windows Server
gelöst NTFS-Ordner in einer Freigabe wird unsichtbar (3)

Frage von ooAlbert zum Thema Windows Server ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (12)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...