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-Key: 232936

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

Printed on: April 20, 2024 at 03:04 o'clock

Member: bastla
bastla Mar 18, 2014 at 15:44:02 (UTC)
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
Member: lukyluky
lukyluky Mar 19, 2014 at 07:05:54 (UTC)
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
Member: bastla
bastla Mar 19, 2014 at 08:41:18 (UTC)
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
Member: lukyluky
lukyluky Mar 19, 2014 at 09:53:10 (UTC)
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?
Member: bastla
bastla Mar 19, 2014 at 12:28:50 (UTC)
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
Member: lukyluky
lukyluky Mar 19, 2014 at 14:19:28 (UTC)
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
Member: bastla
bastla Mar 19, 2014 at 15:45:10 (UTC)
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
Member: lukyluky
lukyluky Mar 20, 2014 at 11:11:02 (UTC)
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
Member: bastla
bastla Mar 20, 2014 at 11:26:18 (UTC)
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
Member: lukyluky
lukyluky Mar 20, 2014 at 14:42:26 (UTC)
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ß
Member: bastla
bastla Mar 20, 2014 at 16:07:34 (UTC)
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