Seit Windows Server 2008 gibt es eine neue Option beim Erzeugen von Organisationseinheiten (OU) in Active Directory: Sie nennt sich “Objekt vor zufälligem Löschen schützen” und findet sich auf der Registerkarte Objekt bzw. im Assistenten beim Neuanlegen. Die Übersetzung ist nicht besonders gelungen, denn es geht nicht um “zufälliges”, sondern um versehentliches Löschen.
Im Hintergrund passiert ein einfacher Trick: Diese Option setzt die Berechtigungen auf der OU so, dass das Lösch-Recht für die Gruppe “Jeder” verweigert wird. Dadurch kann auch ein Admin die OU nicht einfach löschen und muss das Häkchen erst entfernen.
Natürlich kann man diese Option auch selbst setzen, indem man dieselben Berechtigungen direkt auf das Objekt setzt. Das ist z.B. in Umgebungen interessant, die noch keinen Windows Server 2008 (oder neuer) nutzen. Oder aber dann, wenn man das per Skript machen möchte.
Aber Obacht: Das korrekte Mapping der Berechtigungen und des Häkchens funktioniert nur, wenn man die Berechtigungen exakt setzt. Hier ein Beispiel, wo es nicht funktioniert:
Berechtigung “Löschen” auf dem Objekt für die Gruppe “Jeder” verweigern per dsacls:
dsacls „OU=MeineOU,DC=faq-o-matic,DC=net“ /D „NT-Autorität\Jeder“:SD;;
führt zu:
Schauen wir uns das in LIZA an:
Prüfen wir das mal gegen eine OU, wo das Häkchen im GUI gesetzt wurde. Hier die Berechtigungen in LIZA angezeigt:
Das Lösch-Recht ist also sowohl für das Objekt selbst als auch für die Unterstruktur gültig, aber nur dem Objekt zugewiesen (keine Vererbung). Das ist Ergebnis der Kombination zweier AD-Berechtigungen:
Genau das muss man also mit dsacls nachbilden. Schlauerweise benutzt dsacls dafür nicht ganz dieselben Kürzel …
dsacls „OU=MeineOU,DC=faq-o-matic,DC=net“ /D „NT-Autorität\Jeder“:DTSD;;
“DT” steht für “Delete Tree” und “SD” für “Singe Delete”. Und dies führt dann auch zum gewünschten Ergebnis:
http://faq-o-matic.net/?p=2355