NAMING_VIOLATION Fehler 0x2099 beim Anlegen von OUs in AD LDS

Nach der Installation einer AD LDS Instanz und der Konfiguration einer Partition bin ich auf ein Problem gestoßen, dass ich innerhalb der Struktur keine OUs anlegen konnte. Ein Anlegen der OU per ldp.exe ist mit folgendem Fehlerbild fehlgeschlagen (im folgenden Beispiel lautet der Distinguished Name meiner Partition CN=external,DC=company,DC=local):

Error: Add: Naming Violation. <64>
Server error: 00002099: NameErr: DSID-030510C6, problem 2005 (NAMING_VIOLATION), data 0, best macht of:
   'CN=external,DC=company,DC=local'

Error 0x2099 The object cannot be added because the parent is not on the list of possible superiors.

Der Import einer LDF Datei gibt einen ähnlich lautenden Fehler aus.

Wie der Fehler schon sagt, ist es nicht erlaubt, OUs innerhalb von Containern anzulegen. Ursache hierfür sind die Structure Rules in AD LDS. Sie definieren, welche Parent-Child Beziehungen zwischen classSchema Objekten in AD LDS Instanzen möglich sind. Structure Rules werden definiert durch die Attribute possSuperiors und systemPossSuperiors des jeweiligen classSchema Objekts. Das Standard-Schema classSchema für Organisationseinheiten (OUs) in AD LDS sieht wie folgt aus:

cn: Organizational-Unit
ldapDisplayName: organizationalUnit
governsId: 2.5.6.5
objectClassCategory: 1
rdnAttId: ou
subClassOf: top
systemMustContain: ou
systemMayContain: x121Address, userPassword, uPNSuffixes, co, 
  telexNumber, teletexTerminalIdentifier, telephoneNumber, street, st, 
  seeAlso, searchGuide, registeredAddress, preferredDeliveryMethod, 
  postalCode, postalAddress, postOfficeBox, 
  physicalDeliveryOfficeName, managedBy, thumbnailLogo, l, 
  internationalISDNNumber, facsimileTelephoneNumber, 
  destinationIndicator, desktopProfile, defaultGroup, countryCode, c, 
  businessCategory
systemPossSuperiors: country, organization, organizationalUnit,
  domainDNS
schemaIdGuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
defaultSecurityDescriptor: D:S:
defaultHidingValue: FALSE
systemOnly: FALSE
defaultObjectCategory: CN=Organizational-Unit,<SchemaNCDN>
systemFlags: FLAG_SCHEMA_BASE_OBJECT

Wie daran zu erkennen ist, ist Container kein möglicher übergeordneter Objekt-Typ für OUs, d.h. im Umkehrschluss: OUs können nicht unterhalb von Containern angelegt werden. Glücklicherweise können Structural Rules geändert werden, indem das possSuperiors Attribut (nicht das systemPossSuperiors Attribut – dieses ist ein Systemattribut und kann daher nur bei der initialen Anlage des classSchema Objekts spezifiziert werden) für ein classSchema Objekt angepasst wird. Somit können Container als möglicher übergeordneter Objekt-Typ für OUs hinzugefügt werden.

Die Anpassung wird in folgendem Beispiel durch den Import einer LDF-Datei durchgeführt. Der erste Eintrag fügt den Objekt-Typ Container zum Attribut possSuperiors des Objekt-Typ Organizational-Unit hinzu. Der zweite Eintrag führt mittels der RootDSE Modify Operation schemaUpdateNow ein sofortiges Schema Update durch, damit die erste Änderung sofort verwendet werden kann.

# C:\Temp\OrgUnit-possSuperiors.ldf
-
dn: cn=Organizational-Unit,cn=Schema,cn=Configuration,dc=company,dc=local
changetype: modify
add: possSuperiors
possSuperiors: container
–
dn:
changetype: modify
add: schemaUpdateNow
schemaUpdateNow: 1

Der Befehl zum Import der LDF Datei lautet wie folgt:

C:\Windows\system32>ldifde -i -f C:\Temp\OrgUnit-possSuperiors.ldf -s localhost:389 -c "cn=Schema,cn=Configuration,dc=company,dc=local" #schemaNamingContext

Connecting to "localhost:389"
Logging in as current user using SSPI
Importing directory from file "C:\Temp\OrgUnit-possSuperiors.ldf"
Loading entries…
2 entries modified successfully.

Ist das Schema angepasst, lassen sich nun OUs innerhalb von Containern anlegen.

Ein ähnliches Problem tritt gelegentlich in Kombination mit ADAM-Sync auf, also wenn Objekte vom Active Directory in eine AD LDS Instanz synchronisiert werden.

Beipiel:
Ich möchte meine AD Domain DC=company,DC=com in meine AD LDS Partition CN=external,DC=company,DC=local synchronisieren. Dabei wird das builtinDomain Objekt angelegt. Dies schlägt fehl, weil die builtinDomain Objekt-Klasse nur über die Objekt-Klasse domainDNS als possSuperior Attribut verfügt. Damit ADAM-Sync funktioniert, muss auch hierfür der Objekt-Typ container als possSuperior konfiguriert werden:

# C:\Temp\BuiltinDomain-possSuperiors.ldf
-
dn: cn=Builtin-Domain,cn=Schema,cn=Configuration,dc=company,dc=local
changetype: modify
add: possSuperiors
possSuperiors: container
–
dn: 
changetype: modify
add: schemaUpdateNow
schemaUpdateNow: 1

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.