Chemieberatung Dr. Luthardt 

weiter

Best seen with
Get Firefox!

Valid HTML 4.01!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.
Valid CSS!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.

visitors
counter
last modified
30.07.2015

Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.

Tipps und Tricks

von Michael Luthardtauthor: Michael Luthardt

cacls & icacls – Dateiberechtigungen auf der Kommandozeile

Mit dem Dateisystem NTFS hat Microsoft sehr fein unterteilte Zugriffsberechtigungen auf Ordner und Dateien eingeführt.
Für deren Zuordnung zu Gruppen und Benutzern – die Access Control Entries (ACE) – gibt es eine unüberschaubare Menge an Kombinationsmöglickkeiten. Hinzu kommt, dass sich Berechtigungen auf Ordner standardmäßig auf alle Kindobjekte engl. inheritancevererben. Die Gesamtheit der Berechtigungen (der ACE) zum Zugriff auf ein Objekt wird abgekürzt als engl. Access Control List (Zugriffssteuerungsliste).
Bei den ACLs unterscheidet MS/Windows weiter zwischen D(iscretionary)ACL und S(ystem)ACL. Erstere sind die durch den Objektbesitzer und Administratoren willkürlich festlegbaren Zugriffsrechte der Benutzer und Gruppen, über die wir hier ausschließlich reden. Die SACL enthält die Überwachungseinstellungen.
ACL
bezeichnet.

Die korrekte Vererbung ist von wesentlicher Bedeutung für das ungestörte Funktionieren der ACLs.
Achtung Von übergeordneten Objekten gerbte Berechtigungen können nicht direkt geändert werden! Sind solche Berechtigungen dennoch zu ändern, so muss die die Vererbung unterbrochen und die sonst ererbte ACL als Kopie auf das Kindobjekt übertragen werden.

Es gibt kein Kommandozeilentool, mit dem die Vererbung unterbrochen und die Eltern-ACL kopiert werden kann! Dies ist nur über das grafische Interface "Sicherheit" im Kontextmenü für Dateien und Ordner möglich.
Microsoft bietet das VB-Skript xcacls.vbs zum kostenlosen Download an, mit dem dies möglich sein soll; bei mir funktioniert es jedoch nicht.

Es ist leicht möglich, sich in der Zuordnung von Berechtigungen bis zur Unbrauchbarkeit eines Windowssystems zu verheddern. In XP Home gibt es keinen einfachen (Graphical User InterfaceGUI-) Zugriff auf ACLs, wohl aber in Vista Home. Wem nicht klar ist, was er tut, sollte an diesen Berechtigungen nichts ändern.
Achtung Berechtigungen für Partitions-Roots (C:\, D:\ usw.) sollten nicht geändert werden. Sollen Benutzer auf einer neuen Partition, z. B. D: Dateien schreiben können, müssen sie zuerst einen Ordner auf D:\ anlegen; direktes Schreiben auf Roots ist Benutzern nicht erlaubt.

Mit cacls.exe gibt es für W2k, W2k3 und XP ein Kommandozeilentool, mit dem sich ACLs vorhandener Objekte ändern lassen. Ein Beispiel finden Sie weiter hier.

Vorhanderner Objekte deshalb, Achtung weil cacls nicht vollständig richtig mit der Vererbung umgehen kann! Mit cacls läßt sich zwar die Vererbung brechen, neue Berechtigungen eines Ordners werden aber nicht immer korrekt auf neue Kindobjekte übertragen.

icacls.exe ist das Nachfolgetool für cacls in Windows Vista und Windows Server 2003 SP2. Es besitzt stark erweiterte Optionen gegenüber cacls.
Die Vista- und die 2k3SP2-Versionen sind nicht kompatibel; nur die 2k3SP2-Version kann unter Windows XP benutzt werden. Letztere läßt sich mit7-Zipaus dem Servicepack 2 für Windows Server 2003 extrahieren.

Hauptgründe für die Einführung des neuen Programms sind:
• Vorhandene Vererbungen werden berücksichtigt und neue Berechtigungen korrekt vererbt.
• Durch neue Optionen ist das Arbeiten mit ACLs sicherer.
• Die in Vista zusätzlich zu den DACLs eingeführten weiter Mandatory Integrity Level (IL) können mit der Vista-Version angezeigt und teilweise bearbeitet werden.
icacls1 findet hier eigene Erwähnung, weil es das Arbeiten mit Berechtigungsänderungen auf der Kommandozeile sicherer macht und sich im Hilfetext ein Fehler befindet. Die ausschließlich Vista betreffenden IL-Optionen werden dort besprochen.
Andereseits ist es auch mit icacls nicht möglich, geerbte Berechtigungen zu ändern oder zu löschen! Ein sehr ärgerlicher Zustand.

Der Sicherheit im Umgang mit ACLs dienen folgende Optionen:
icacls {name} /save {acl-Datei} [/T]
name ist der Name einer Datei oder eines Ordners, optional einschließlich Dateien und Unterordner mit /T, dessen ACL unter acl-Datei (mit beliebigem Namen) gespeichert werden soll. Es ist sehr zu empfehlen, diese Funktion vor ACL-Änderungen zu nutzen.
icacls {name_des_elternobjekts} /restore {acl-Datei}
stellt die gespeicherte ACL wieder her. Die integrierte Hilfe gibt hier die Funktion falsch mit /restore:{acl-Datei} an, beschränkt name unrichtig auf Verzeichnis und weist nicht darauf hin, dass bei /restore der Name des Elternobjekts in Bezug auf /save angegeben werden muss.
icacls {name} /reset [T]
setzt die ACL für die Datei oder oder den Ordner name, optional einschließlich Unterordner und Dateien, auf standardmäßig vererbte ACLs zurück. Diese Funktion ist der Rettungsanker im ACL-Dickicht.

Für die konkrete Umsetzung dieser Funktionen ist es wichtig zu verinnerlichen, dass die Anwendung immer aus der Sicht des Elternobjekts erfolgen muss.

Im Verzeichnis …\foo gebe es einen Ordner bar. Dann sind folgende Befehle für bar möglich: …\foo>icacls bar /save bar.acl /T
…\foo>icacls . /restore bar.acl
…\foo>icacls bar /reset bar.acl /T

Für die Datei file im Ordner foo kann man verwenden: …\foo>icacls file /save file.acl
…\foo>icacls . /restore file.acl
…\foo>icacls file /reset file.acl

Ebenso wäre möglich: …\foo>icacls .\* /save files.acl
…\foo>icacls . /restore files.acl
…\foo>icacls .\* /reset files.acl
wobei letzteres auch den Ordner bar berücksichtigt, nicht jedoch dessen Dateien und Unterordner.

Einige weitere Tipps zu icacls.

Achtung /save speichert keine absoluten Pfade! Ausgangspunkt ist immer der Elternordner. Deshalb muss bei /restore der Pfad des Elternordners angegeben werden.

Hat z. B. die Gruppe BENUTZER das Schreibrecht für Datei geerbt, kann sie mit icacls nicht auf "Lesen/Ausführen" für Datei beschränkt werden. Der Befehl icacls Datei /grant:r BENUTZER:RX wird zwar klaglos ausgeführt, in der ACL taucht BENUTZER dann aber zweimal auf: mit dem geerbten Schreibrecht und dem neuen Lesen/Ausführen-Recht, obwohl /grant:r laut Hilfe alle vorhandenen Rechte durch die neuen Rechte ersetzen sollte. Eine böse Falle! Geerbte Rechte werden eben nicht geändert.

Mit icacls ist es möglich, den Besitzer einer Datei zu ändern und zu prüfen, welche Rechte bestimmte Gruppen oder Benutzer haben.

Achtung Vorsicht bei der Verwendung von /deny. Dies hat (für mich unlogische) Folgen, die man in Anlehnung an die GUI-Bearbeitung von ACLs nicht erwartet.

Sollen Zugriffsrechte in lesbarer Form in einer Textdatei gespeichert werden, so verwendet man statt /save icacls name > acl_name.txt.

Beim Setzen neuer Rechte kann man deren Vererbung gezielt beeinflussen.

icacls verwendet intern nicht mehr den OEM-Zeichensatz. Unter XP führt dies dazu, dass die Konsolenausgabe Umlaute und ß nicht richtig wiedergibt.
Dies läßt sich mit
icacls {Name} [Befehle] [Optionen] | cscript %windir%\oem2ansi.vbs //nologo korrigieren. Vorausgesetzt, man hat weiter das Skript oem2ansi.vbs in den Windows-Ordner kopiert.
Weiter verbessern läßt sich dies, wenn der Befehl als weiter doskey-Makro gespeichert wird:
doskey icacls=icacls $* $b cscript %windir%\oem2ansi.vbs //nologo
Auch dieser alias ließe sich in die cmd-Startdatei aufnehmen.

cacls ist weiterhin in 2k3 und Vista vorhanden, sollte nach Empfehlung von Microsoft jedoch nicht mehr benutzt werden. Wegen der Vererbungsproblematik will man auf cacls wohl doch nicht ganz verzichten.
Andererseits ist es unverständlich, warum Microsoft kein Kommandozeilentool zur Verfügung stellt, das eine komplette und fehlerfreie ACL- und IL-Bearbeitung erlaubt.

           
1 icacls könnte für inheritance oder Integrity Level stehen.

30. 12. 2007

 nach oben

Änderungen dieser Seite verfolgen:

it's private by ChangeDetection