Home > Information Technology > Windows Server 2003 – NTFS Vererbungen reparieren mittels ICACLS.exe

Windows Server 2003 – NTFS Vererbungen reparieren mittels ICACLS.exe

Zugegeben: das Thema Rechte-Vererbungen unter NTFS ist nicht gerade prickelnd, aber trotzdem ist dies kein Grund es nicht korrekt einzusetzen. Leider bringen manche selbsterkorenen IT-Pro’s recht wenig Wissen in diesem (eigentlich recht wichtigem) Thema mit.

Bei meinem derzeitigen Arbeitgeber hatte ich das Problem das in praktisch der gesamten Dateiablage (aka Fileserver) die Vererbung unterbrochen wurde. Das entsteht entweder beim Verschieben von Daten (im Gegensatz zum Kopieren) oder aber beim Einrichten von NTFS Rechten wo entsprechende Rückfrage pauschal mit “Ja” beantwortet wird (Abbildung rechts).

Falls dieser Dialog mit “Kopieren” beantwortet wird, ist für diese Ebene (sprich Ordner) die NTFS Vererbung dauerhaft unterbrochen. Egal was weiter höher im Dateisystem als Vererbung eingerichtet wird, es endet hier. Darüber hinaus wurden die bisher vererbten Rechte nun als “lokale” Recht eingetragen. Wenn die “Administratoren”-Gruppe vorher per Vererbung berechtigt war (und auch nur beim Ursprung der Vererbung entfernt werden konnte), ist sie nun quasi “lokal” auf dem Ordner/Datei in der ACL eingetragen.

Das Ergebnis ist in der Produktion eher kontra-produktiv. Im nachhinein “mal eben” Rechte bequem von “oben runter” durchreichen funktioniert nicht mehr. In so einer Hierarchie muss jeder Ordner für sich mit Rechten versehen werden. Kurzum : bei großem Umfang ist das kaum noch zu stemmen

Die Korrektur gestaltet sich mittels der GUI relativ einfach : den Haken setzen und schon ist die Vererbung für diesen Ordner wieder aktiv. Problem : nun hat man u.U. manche Gruppen doppelt. Die oben schon besagte “Administratoren”-Gruppe ist nun zweimal berechtigt. Einmal durch die Vererbung und einmal durch die “lokalen” Rechte. Also muss die lokale Berechtigung entfernt werden. An dieser Stelle (aber nicht nur) kommt bei mir ICACLS.exe ins Spiel. Mittels ICACLS.exe können unter Windows XP/Windows Server 2003 (ab SP2) aber auch Windows 7 oder Windows Server 2008 NTFS Rechte auf der Konsole bearbeitet werden. Darüber hinaus finde ich die Darstellung von Rechten auf der Konsole für solche Aufgaben weitaus effektiver als das herum-geklicke in der GUI. Hier ein Beispiel :

NTFS_TEST
VORDEFINIERT\Administratoren:(OI)(CI)(F)
VORDEFINIERT\Benutzer:(CI)(S,WD,AD)
VORDEFINIERT\Benutzer:(OI)(CI)(RX)
ERSTELLER-BESITZER:(OI)(CI)(IO)(F)
NT-AUTORITÄT\SYSTEM:(OI)(CI)(F)
VORDEFINIERT\Administratoren:(I)(OI)(CI)(F)
NT-AUTORITÄT\SYSTEM:(I)(OI)(CI)(F)
ERSTELLER-BESITZER:(I)(OI)(CI)(IO)(F)
VORDEFINIERT\Benutzer:(I)(OI)(CI)(RX)
VORDEFINIERT\Benutzer:(I)(CI)(AD)
VORDEFINIERT\Benutzer:(I)(CI)(WD)

In der ersten Zeile wird der Name des Ordners oder der Datei angezeigt. Darunter stehen zeilenweise die einzelnen Berechtigungen. Zu Beginn jeweils die Gruppe oder der Benutzer und dahinter (nach dem Doppelpunkt) die exakte Berechtigung. In Klammer jeweils die Eigenschaften dieser Berechtigung. (OI) bedeutet diese Berechtigung wir auf alle Dateien unterhalb dieses Ordners vererbt (Object Inheritance). (CI) steht hierbei für die Vererbung auf Unterordner (Container-Inheritance). Am Ende der Zeile steht die Berechtigung an sich. Zum Beispiel (F) für “Full control” oder “M” für “Modify” (Ändern-Recht). Spannend ist hierbei das (I) hinter der Gruppe : diese Berechtigung steht für ein vererbtes Recht (inherited). So ist in unserem Beispiel deutlich zu sehen das die Berechtigungen doppelt vorhanden sind. Einmal lokal und einmal durch die Vererbung aus einem übergeordnetem Ordner.

Mittels ICACLS lassen sich nun recht einfach die Berechtigungen entfernen mit

ICACLS.exe <Ordner/Datei> /remove <Gruppe/Benutzer>

oder um bei unserem Beispiel zu bleiben :

ICACLS.exe NTFS_TEST /remove VORDEFINIERT\Administratoren

Da vererbte Rechte nur am Ursprung entfernt werden können wird somit automatisch die “lokale” Berechtigung entfernt. Das Ergebnis danach (Darstellung mit “ICACLS.exe NTFS_TEST”)

NTFS_TEST
VORDEFINIERT\Benutzer:(CI)(S,WD,AD)
VORDEFINIERT\Benutzer:(OI)(CI)(RX)
ERSTELLER-BESITZER:(OI)(CI)(IO)(F)
NT-AUTORITÄT\SYSTEM:(OI)(CI)(F)
VORDEFINIERT\Administratoren:(I)(OI)(CI)(F)
NT-AUTORITÄT\SYSTEM:(I)(OI)(CI)(F)
ERSTELLER-BESITZER:(I)(OI)(CI)(IO)(F)
VORDEFINIERT\Benutzer:(I)(OI)(CI)(RX)
VORDEFINIERT\Benutzer:(I)(CI)(AD)
VORDEFINIERT\Benutzer:(I)(CI)(WD)

Zu guter letzt (und der eigentliche Grund für dieses Posting). Mit der ICACLS.exe von Windows Server 2003 (SP2) lässt sich die Vererbung leider nicht aktivieren. Die Version von Server 2008 unterstützt den Parameter “/inheritance:[e|d]”. Zum existiert eine aktuellere Version auch für Win2K3. Das ist ein Request-Hotfix und ist hier zu finden.

 

Categories: Information Technology Tags:
  1. No comments yet.
  1. No trackbacks yet.