lukyluky
Goto Top

Ordner Berechtigungen auf Server ändern

Hallo zusammen,

ich hoffe Ihr könnt mir bei meinem kleinen Problem helfen.

Wir haben mehrere File-Server bei denen wir die Berechtigungen ändern müssen.

Es gibt leider kein einheitliches Berechtigungskonzept und jetzt soll die lokale Administratoren Gruppe auf jeden Ordner Vollzugriff erhalten.
Bis jetzt sind die Ordner meistens nur auf die berechtigten User beschränkt.

Da die Vererbung bei sehr vielen Ordnern deaktiviert ist, ist es leider nicht möglich die benötigte Berechtigung nur auf dem obersten Ordner zu vergeben.
Wenn die Berechtigung durchgedrückt werden sind leider die ursprünglichen Berechtigungen überschrieben.

Gibt es vielleicht eine Möglichkeit über ein Script die benötigten Berechtigung auf alle Ordner, Unterordner und Dateien hinzuzufügen?

Ich danke euch sehr für eure Hilfe.

Content-ID: 232936

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

Ausgedruckt am: 15.11.2024 um 07:11 Uhr

bastla
bastla 18.03.2014 um 16:44:02 Uhr
Goto Top
Hallo lukyluky!

Sollte direkt aus einer CMD-Shell etwa so gehen:
for /d /r "D:\Startordner" %i in (*) do cacls "%i" /c /e /g Administratoren:F
Damit wird für alle Ordner (und Unterordner und Unterunterordner und ...) unterhalb von "D:\Startordner" in den Sicherheitseinstellungen einzeln die Gruppe Administratoren mit Vollzugriff hinzugefügt. Wenn Du "/d" weg lässt, werden Dateien bearbeitet.

Grüße
bastla
lukyluky
lukyluky 19.03.2014 um 08:05:54 Uhr
Goto Top
Hallo bastla,

vielen Dank.
Werde ich gleich mal testen.
Was meinst du mit "Dateien werden bearbeitet wenn man /d weglässt?"
Gibt es vielleicht noch die möglichkeit ein Log erstellen zu lassen um nachweisen zu können das alle Ordner und Dateien die Berechtigung erhalten haben?
Wird der Administrator in deinem Beispiel ersetzt oder wird ein weiterer Administrator mit Vollzugriff hinzugefügt?

Danke
bastla
bastla 19.03.2014 um 09:41:18 Uhr
Goto Top
Hallo lukyluky!
Was meinst du mit "Dateien werden bearbeitet wenn man /d weglässt?"
Damit meine ich, dass mit "/d" die Ordner und ohne "/d" die Dateien bearbeitet werden.
Wird der Administrator in deinem Beispiel ersetzt oder wird ein weiterer Administrator mit Vollzugriff hinzugefügt?
Es wird die Gruppe "Administratoren" hinzugefügt.
Gibt es vielleicht noch die möglichkeit ein Log erstellen zu lassen um nachweisen zu können das alle Ordner und Dateien die Berechtigung erhalten haben?
Das kannst Du im Nachhinein mit einem
cacls "D:\Startordner" /T>"D:\Berechtigungen.txt"
anzeigen lassen - es werden dann ausgehend von "D:\Startordner" die aktuellen Berechtigungen für alle Ordner und Dateien in die Datei "D:\Berechtigungen.txt" geschrieben.

Zum Testen solltest Du übrigens besser einmal "klein" anfangen und einen Ordner mit nur wenigen Unterordnern / Dateien als "Startordner" verwenden. Da jedes einzelne Objekt "angefasst" werden muss, wird die ganze Aktion vermutlich eine Weile dauern ...

Zur Kontrolle der vergebenen Berechtigungen könntest Du auch "AccessChk" und "AccessEnum" verwenden.

Grüße
bastla
lukyluky
lukyluky 19.03.2014 um 10:53:10 Uhr
Goto Top
Hallo bastla,

besteht die Möglichkeit Daten und Ordner in einem Schritt zu berechtigen?
Mit /d werden Ordner berechtigt und ohne /d werden nur die Daten ohne Ordner berechtigt. Habe ich doch richtig verstanden oder?
bastla
bastla 19.03.2014 um 13:28:50 Uhr
Goto Top
Hallo lukyluky!

Du brauchst ja nur die beiden Befehle nacheinander ausführen (zB per Batch - dann aber jeweils mit "%%i" anstatt "%i") ...

Grüße
bastla
lukyluky
lukyluky 19.03.2014 um 15:19:28 Uhr
Goto Top
Super. Danke

Wäre das dann so richtig?
for /d /r "D:\Startordner" %i in (*) do cacls "%i" /c /e /g Administratoren:F
for /r "D:\Startordner" %i in (*) do cacls "%%i" /c /e /g Administratoren:F

Wie du schon erwähnt hast wird die Batch unter umständen sehr lange dauern wenn man diese auf einen größeren Hauptordner anwendet.

Ist es vielleicht möglich eine Text Datei einzulesen in der vordefinierten Ordner eingetragen sind?
Beispiel:
d:\startordner (100 Unterordner) und es sollen erstmal nur folgende Ordner/Dateien Berechtigt werden

d:\startordner\1
d:\startordner\2
d:\startordner\3

Vielen Dank
bastla
bastla 19.03.2014 um 16:45:10 Uhr
Goto Top
Hallo lukyluky!

Dann etwa so:

Inhalt der Datei "D:\Ordnerauswahl.txt"
d:\startordner\1
d:\startordner\2
d:\startordner\3 
Batch (ungetestet):
@echo off & setlocal
set "Liste=D:\Ordnerauswahl.txt"  

for /f "usebackq delims=" %%o in ("%Liste%") do (  
    for /d /r "%%o" %%i in (*) do cacls "%%i" /c /e /g Administratoren:F  
    for /r "%%o" %%i in (*) do cacls "%%i" /c /e /g Administratoren:F  
)
Grüße
bastla
lukyluky
lukyluky 20.03.2014 um 12:11:02 Uhr
Goto Top
Hallo bastla,

habe das scipt getestet aber leider funktioniert es nicht.
Ich erhalte auch keine Fehlermeldung.

Da mir das scripten nicht so liegt kann ich da auch keinen Fehler in deinem scipt finden.

Könntest du mir da vielleicht doch nochmal helfen?

Ich danke Dir

Grüße
bastla
bastla 20.03.2014 um 12:26:18 Uhr
Goto Top
Hallo lukyluky!

Du kannst zwar noch vor Zeile 5 einfügen
     echo Bearbeite "%%o"
und am Ende eine Zeile
pause
einbauen, aber ansonsten kann ich nur noch darauf hinweisen, dass der Batch "Als Administrator" gestartet werden soll ...

Grüße
bastla
lukyluky
lukyluky 20.03.2014 um 15:42:26 Uhr
Goto Top
Hallo,

hier nochmal mein Script:

@echo off & setlocal
set "liste=e:\dummies\ordner.txt"
for /f "usebackq delims=" %%o in ("%liste%") do (
echo Bearbeite "%%o"
pause
for /d /r "%%o" %%i in (*) do cacls "%%i" /c /e /g administratoren:F
echo Bearbeite "%%o"
echo Bearbeite "%%i"
for /r "%%o" %%i in (*) do cacls "%%i" /c /e /g administratoren:F
echo Bearbeite "%%o"
echo Bearbeite "%%i"
)
pause


Und hier die Ausgabe:

D:\Dokumente und Einstellungen\xxxxxx>E:\Dummies\Ordner.bat
Bearbeite "e:\dummies\1"
Drücken Sie eine beliebige Taste . . .
Bearbeite "e:\dummies\1"
Bearbeite "%i"
Bearbeite "e:\dummies\1"
Bearbeite "%i"
Bearbeite "e:\dummies\1.1"
Drücken Sie eine beliebige Taste . . .
Bearbeite "e:\dummies\1.1"
Bearbeite "%i"
Bearbeite "e:\dummies\1.1"
Bearbeite "%i"
Drücken Sie eine beliebige Taste . . .

Wie es aussicht läuft das script korrekt durch aber es setzt die Berechtigungen nicht auf die Verzeichnisse.
Hast du vieleicht noch eine Idee?

Danke

Gruß
bastla
bastla 20.03.2014 um 17:07:34 Uhr
Goto Top
Hallo lukyluky!

Verwende zum Posten von Code (und auch der Ausgabezeilen) bitte die pasende Formatierung ...

Wenn Du jeden einzelnen Schritt per echo dokumentieren willst, musst Du das natürlich innerhalb der entsprechenden Schleifen machen, daher eher:
echo off & setlocal
set "liste=e:\dummies\ordner.txt"  
for /f "usebackq delims=" %%o in ("%liste%") do (  
    echo Bearbeite "%%o"  
    pause
    for /d /r "%%o" %%i in (*) do (  
        echo Bearbeite "%%~fi"  
        cacls "%%i" /c /e /g administratoren:F  
    )
    for /r "%%o" %%i in (*) do (  
        echo Bearbeite "%%~fi"  
        cacls "%%i" /c /e /g administratoren:F  
    )
)
pause
Ansonsten kannst Du eigentlich nur testen, was bei Direkteingabe mit zB
cacls "e:\dummies\1\Testdatei.txt" /e /g administratoren:F
passiert (das "/c" habe ich absichtlich weggelassen) ...

Wenn Du übrigens in "e:\dummies" nur eine Unterordnerebene hast, müsste in Deiner "e:\dummies\ordner.txt" als Startordner natürlich "e:\dummies" stehen, da ja nur unterhalb des jeweiligen Startordners liegenden Ordner verarbeitet werden (gilt nicht für Dateien - es werden auch direkt im Startordner befindliche Dateien einbezogen) ...

Grüße
bastla