Aktionen

Windows:Per Batch Berechtigungen auf Ordner inklusive Unterordner setzen mit icacls

Aus znilwiki

Important.png
Hinweis: Am 09.10.2013 wurde dieser Artikel überarbeitet und erweitert


Ich habe öfters die Anforderung, Rechte von Ordner und Dateien per Batch / Skript neu zu setzen. Irgendwie erfinde ich das Rad dabei jedesmal neu - deshalb schreibe ich hier nun endlich mal eine Lösung für das nächste mal nieder :-)

Ich führe hier die aus meiner Sicht wichtigsten Parameter auf - den Rest bitte der icacls Hilfe entnehmen.
icacls ist übrigends bei Windows dabei - das muss nicht erst heruntergeladen werden :-)


Allgeiner Aufruf von icalcs

Rechte gewähren

icacls [Pfad]Datei-oder-Ordner /grant Benutzer-oder-Gruppe:[(CI)(OI)](Rechte)

Bedeutungen

icacls                  : Der eigentliche Befehl (in Windows eingebaut)
[Pfad]Datei-oder-Ordner : Für welche Datei oder Ordner?
/grant                  : Wir wollen Rechte gewähren
Benutzer-oder-Gruppe    : z.B. "Jeder", "Domain\Domänen-Benutzer"
:                       : Wichtig! Der Doppelpunkt zwischen Gruppe/Benutzer und den Rechten
(CI)(OI)                : Veerben auf alle Unterordner und Dateien (macht nur bei Ordner sinn)
(Rechte)                : (F)  = Vollzugriff
                          (M)  = Ändern
                          (RX) = Lesen und Ausführen
                          (N)  = Keinen Zugriff



Rechte entziehen / Benutzer entfernen

Die einfachste Form ist, neben dem setzen von (N) das wir den Benutzer / die Gruppe von der Datei entfernen:

icacls [Pfad]Datei-oder-Ordner /remove Benutzer-oder-Gruppe

Bedeutungen:

icacls                  : Der eigentliche Befehl (in Windows eingebaut)
[Pfad]Datei-oder-Ordner : Für welche Datei oder Ordner?
/remove                 : Wir wollen einen Benutzer oder Gruppe entfernen
Benutzer-oder-Gruppe    : z.B. "Jeder", "Domain\Domänen-Benutzer"




Vererbung ein oder ausschalten

Wer versucht einen Benutzer wie im Abschnitt zuvor zu entfernen kann auf das Problem stoßen das es einfach nicht klappen will.
icacls.exe meldet zwar ein "1 Dateien erfolgreich verarbeitet" - aber wenn wir nachsehen ist der Benutzer immer noch drin.
Warum? Der Lösung kommen wir näher wenn wir es von Hand im Explorer machen - da gibt es nämlich dann eine Fehlermeldung "... kann nicht entfernt werden da dieses Objekt übergeordnete Berechtigungen übernimmt."
Der Benutzer oder die Gruppe steht also schon weiter oben im Baum und ist hier nur dank Veerbung angelangt.
Die Lösung ist also, die Veerbung ab dieser Stelle zu unterbrechen:

icacls [Pfad]Datei-oder-Ordner /inheritance:d

Bedeutungen:

icacls                  : Der eigentliche Befehl (in Windows eingebaut)
[Pfad]Datei-oder-Ordner : Für welche Datei oder Ordner?
/inheritance:d          : d -> deaktiviert die Vererbung, kopiert aber die ACL (REchte sind wie zuvor, nur ohne Vererbung von oben
                          r -> entfernt die vererbten ACLs. Testen! Ggf. kann nur noch der Besitzer kann dann darauf zugreifen / Änderungen vornehmen
                          e -> aktiviert die Vererbung

Für den Hausgebrauch emfehle ich die Verwendung von "/inheritance:d" und dem anschliessendem entfernen der nichtgewollten Benutzern.



Beispiele

Ordner: Jeder Vollzugriff (inklusive Unterordner)

icacls D:\Beispielordner /grant Jeder:(CI)(OI)(F)

Vorher:
Rechte-mit-icacls-setzen-001.png
Befehl:
Rechte-mit-icacls-setzen-002.png
Nachher:
Rechte-mit-icacls-setzen-003.png Rechte-mit-icacls-setzen-004.png

in englischen Versionen müsst Ihr "Everyone" statt "Jeder" nehmen.



Ordner: Domänengruppe Ändern (inklusive Unterordner)

icacls D:\Beispielordner /grant znil\Beispielgruppe:(CI)(OI)(M)




Ordner: Benutzer lesen und Ausführen (inklusive Unterordner)

icacls D:\Beispielordner /grant Benutzer:(CI)(OI)(RX)

Entspricht der lokalen Gruppe Benutzer (im Englischen: User)


--Bernhard Linz 09:22, 9. Okt. 2013 (CEST)


Loading comments...