Windows:Per Batch Berechtigungen auf Ordner inklusive Unterordner setzen mit icacls
Aus znilwiki
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:
Befehl:
Nachher:
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)