heiko.wellendorf
Goto Top

Per Batch Berechtigungen für Benutzerprofile ändern

Wie kann ich möglichst effizient per Batch NTFS Berechtigungen ändern / hinzufügen?

Moin zusammen,

ich habe ein kleines Problem. Auf einem Fileserver liegen Benutzerprofile.
Da ist nun etwas durcheinander gekommen und einige Benutzer haben keine Vollen Rechte mehr auf Ihr Profil.
Es betrifft ca. 250 Profile, jedes einzeln zu bearbeiten wäre ja ziemlich aufwendet. Da dachte ich - Per Batch und Skript! face-smile

... Jetzt dachte ich so.

Beispiel:
for /f "delims=" %%i in ('dir /b /ad "C:\Dokumente und Einstellungen\"') do @echo C:\Dokumente und Einstellungen\%%i>>ProfileList.txt  
Die Liste nehme ich dann und ein zweites Script nimmt den Inhalt

In dem Fall steht z.B. das drin: C:\Dokumente und Einstellungen\Lars.Testbenutzer

Und vergibt dann über subinacl oder ähnlichem die Berechtigung für den Benutzer lars.testbenutzer.
Jetzt ist das gar nicht so einfach.. Wie kommme ich jetzt jeweils an den Benutzernamen ran?
Nun da dachte ich selbes spiel.. aber nein. Das geht ja nicht so einfach.

... Ich hab gerade kein Plan mehr wie man das in einem kleinen Script realisieren könnte.
Habt ihr da ne Idee? Wäre ganz dankbar face-smile

Lieber Gruß aus Hamburg
Heiko

Content-Key: 194192

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

Printed on: April 25, 2024 at 18:04 o'clock

Member: Penny.Cilin
Penny.Cilin Nov 13, 2012 at 15:16:03 (UTC)
Goto Top
hallo Heiko,

schau Dir mal CACLS oder XCACLS (Ressource Kit Windows Server 2003) an. Damit kannst Du die Berechtigungen in eine Datei umleiten. Dann kannst Du diese via Batch neu setzen.

Under Windows 7 bzw. Windows Server 2008 heißt das Tool ICACLS.


Gruss Penny.
Member: heiko.wellendorf
heiko.wellendorf Nov 13, 2012 at 15:19:34 (UTC)
Goto Top
Das Tool kenne ich.. aber ich hab gerade so ne Blockade wo ich nicht weiterkomme..

Ich hab n Userprofile X auf D:\Profile, dort sind 250 Profilordner und auf jeden Ordner muss der USer selbst wieder vollzugriff haben face-sad ...

Gibts da kein Zweizeiler oder so?
Member: DerWoWusste
DerWoWusste Nov 13, 2012 at 15:28:23 (UTC)
Goto Top
Moin.

Generier eine Liste von Usern.
Dann lass eine For-schleife gegen diese Liste arbeiten, die mit icacls Rechte setzt bzw. mit subinacl Besitzer. Also sowas wie
icacls ...\\server\share\%%a .../grant %%a:m
Member: heiko.wellendorf
heiko.wellendorf Nov 13, 2012 at 15:54:00 (UTC)
Goto Top
for /f "tokens=1,2,3 delims=\" %%a in (C:\ProfileList.txt) do (
echo.
echo Variable 1 %%a
echo Variable 2 %%b
echo Variable 3 %%c
echo.
:: Variablen zusammensetzen
set pfad=%%a\%%c\%%c
set benutzer=%%c
echo ntfsrechtetool %pfad% %benutzer% vollzugriff
pause
)


Sowas in die Richtung stelle ich mir dann vor?! ..
Hmm... warum kann ich pfad und benutzer nicht als variable benutzen? da ist das echo für pfad und benutzer leer face-sad
Ach mensch .. .
Member: bastla
bastla Nov 13, 2012 updated at 16:05:18 (UTC)
Goto Top
Hallo heiko.wellendorf und willkommen im Forum!

Du brauchst doch überhaupt keine eigenen Variablen für Pfad und Benutzer:
for /f "delims=" %%a in (C:\ProfileList.txt) do (  
    echo ntfsrechtetool "%%a" "%%~nxa" vollzugriff  
)
Die Textdatei wäre übrigens auch nicht nötig gewesen:
for /d %%a in (D:\Profile\*) do (
    echo ntfsrechtetool "%%a" "%%~nxa" vollzugriff  
)
Grüße
bastla
Member: heiko.wellendorf
heiko.wellendorf Nov 13, 2012 at 16:09:36 (UTC)
Goto Top
... Was soll ich da jetzt sagen? Krass!
Das klappt toll, hätte nicht gedacht das man das so kürzen kann.
Member: heiko.wellendorf
heiko.wellendorf Nov 14, 2012 at 07:19:32 (UTC)
Goto Top
for /d %%a in ("B:\Profile\*") do (
@cscript //nologo "%windir%\xcacls.vbs" "%%a" /G "kit\%%~nxa":F /E
)


So läuft es und macht genau was es soll.
Danke an alle die mir geholfen haben face-smile

Gruß
Heiko
Member: Penny.Cilin
Penny.Cilin Nov 14, 2012 at 14:27:32 (UTC)
Goto Top
Warum nimmst Du nicht die xcacls.exe aus dem Ressource Kit.
Stattdessen nutzt Du VB-Script.
Member: bastla
bastla Nov 14, 2012 at 16:03:18 (UTC)
Goto Top
... oder noch billiger:
for /d %%a in ("B:\Profile\*") do cacls "%%a" /G "kit\%%~nxa":F /E
Grüße
bastla
Member: Sewman
Sewman Mar 05, 2013 at 07:34:26 (UTC)
Goto Top
Hi,

ich greife das Thema mal auf.

Könntet ihr mir erklären, wie ich per Script eine Gruppe bei den Berechtigungen hinzufügen kann.

Gruß
Sew
Member: bastla
bastla Mar 05, 2013 at 18:25:01 (UTC)
Goto Top
Hallo Sewman!
wie ich per Script eine Gruppe bei den Berechtigungen hinzufügen kann.
Genauso, wie einen User - bei "cacls" etwa mit
cacls "D:\Dein Ordner" /e /g DeineGruppe:R
bzw
cacls "D:\Dein Ordner" /e /g DeineDomain\DeineGruppe:R
Grüße
bastla
Member: Sewman
Sewman Mar 07, 2013 at 14:24:40 (UTC)
Goto Top
Danke schön, hab leider im Moment zu viel um die Ohren, melde mich sobald ich mich dran gesetzt habe.

Gruß
Sew
Member: Sewman
Sewman Mar 27, 2013 at 07:03:48 (UTC)
Goto Top
Hi,

habe jetzt ein wenig getestet.

Das kam dabei raus:

icacls.exe c:\temp\Test /T /C /grant ads.test.de\A-TestFdMgmt:F

Kann ich mir auch ein Logfile ausgeben lassen, nach dem durchlaufen?

Würde das ganze gerne als Job dann wöchtentlich laufen lassen, und mir hinterher entspannt die Logfiles anzeigen.

Gruß
Sew
Member: bastla
bastla Mar 27, 2013 at 10:01:07 (UTC)
Goto Top
Hallo Sewman!

Du kannst die Ausgabe mit
>>D:\Dein.log icacls.exe c:\temp\Test /T /C /grant ads.test.de\A-TestFdMgmt:F
umleiten (mit ">>" wird an eine schon bestehende Datei angefügt, mit ">" eine schon bestehende Datei überschrieben) ...

Mit
>D:\Rights.txt icacls.exe c:\temp\Test /T /C
kannst Du die derzeit gesetzten Rechte anzeigen (bzw durch die Umleitung die Ausgabe in eine Datei schreiben) lassen.

Grüße
bastla
Member: Sewman
Sewman Mar 27, 2013 updated at 11:28:42 (UTC)
Goto Top
Danke dir, aber bekomme folgende Fehlermeldung von der PowerShell, oder gilt das nicht für die PS?

The term '>>' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling
of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:3

back-to-top>> <<<< c:\temp\PremSet.log icacls.exe C.Temp\Test\ /T /C /grant ads.test.de\A-testFMgmt:F

+ CategoryInfo : ObjectNotFound: (>>:String) , CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Member: bastla
bastla Mar 27, 2013 at 11:32:09 (UTC)
Goto Top
Hallo Sewman!

Das ist, so wie alle anderen Code-Beispiele in diesem Thread, Batch (CMD) ...

Grüße
bastla
Member: Sewman
Sewman Mar 27, 2013 at 11:42:26 (UTC)
Goto Top
hehe danke dir.

Kaum macht mans richtig ;)
Member: Sewman
Sewman Apr 10, 2013 updated at 08:39:49 (UTC)
Goto Top
Hi,

Muss nochmal nachhaken.

Gibt es auch eine Möglichkeit im Logfile nur die Fehler abzuspeichern?

Gruß
Sew

Edit: Hab es selbst rausgefunden.

Für die Nachwelt: einfach statt >> , 2>> nehmen