OpenLDAP: Hinzufügen von olcObjectClasses zum Schema

OpenLDAP: Hinzufügen von olcObjectClasses zum Schema

Ich habe OpenLDAP über cn=conf ein Schema hinzugefügt. Das Schema wurde vom WSO2 Identity Server übernommen, aber so geändert, dass es auf cn=conf und OpenLDAP anwendbar ist.

Das Schema wurde ohne Fehler geladen, funktioniert aber nicht. Nach der Abfrage von cn=schemes,cn=conf für alle geladenen Schemata habe ich festgestellt, dass mein Schema nicht die olcObjectClasses-Anweisungen enthält, die den Namen und den Inhalt des Schemas definieren. Dies war Teil der LDIF-Dateien, die ich (ohne Fehler) geladen habe, ist aber aus irgendeinem Grund in der Live-Conf nicht vorhanden.

Ich versuche es jetzt nachträglich hinzuzufügen, erhalte jedoch eine Fehlermeldung:

ldapmodify: invalid format (line 5) entry: "cn={4}wso2Person,cn=schema,cn=config"

Die Datei, die ich zu laden versuche, sieht folgendermaßen aus:

dn: cn={4}wso2Person,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
NAME 'wso2Person'
DESC 'wso2Person'
SUP inetOrgPerson
STRUCTURAL
MAY ( gender $ country $ nickName $ timeZone $ dateOfBirth $ role $ im $ url $ otherPhone $ privatePersonalIdentifier $ profileconfiguration $ prefferedLanguage)
)

Bei der Abfrage: ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config Der Abschnitt zu meinem Schema sieht folgendermaßen aus:

# {4}wso2Person, schema, config
dn: cn={4}wso2Person,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {4}wso2Person
olcAttributeTypes: {0}( 1.3.6.1.4.1.37505.1.2       NAME 'gender'     EQUALI
TY caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.
1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {1}( 1.3.6.1.4.1.37505.1.3       NAME 'country'       
EQUALITY caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {2}( 1.3.6.1.4.1.37505.1.4       NAME 'nickName'     EQUA
LITY caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {3}( 1.3.6.1.4.1.37505.1.5       NAME 'timeZone'       
EQUALITY caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {4}( 1.3.6.1.4.1.37505.1.6       NAME 'dateOfBirth'       
EQUALITY caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {5}( 1.3.6.1.4.1.37505.1.7       NAME 'role'    EQUALITY 
caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 1.3.6.1.
4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {6}( 1.3.6.1.4.1.37505.1.8       NAME 'im'       EQUALITY 
caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {7}( 1.3.6.1.4.1.37505.1.9       NAME 'url'      EQUALITY
caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {8}( 1.3.6.1.4.1.37505.1.10       NAME 'otherPhone'   
EQUALITY caseIgnoreMatch       SUBSTR caseIgnoreSubstringsMatch       SYNTAX 
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {9}( 1.3.6.1.4.1.37505.1.11       NAME 
'privatePersonalIdentifier'       EQUALITY caseIgnoreMatch       SUBSTR 
caseIgnoreSubstringsMatch  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {10}( 1.3.6.1.4.1.37505.1.12       NAME 
'profileconfiguration'       EQUALITY caseIgnoreMatch       SUBSTR 
caseIgnoreSubstringsMatch  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {11}( 1.3.6.1.4.1.37505.1.13       NAME 
'prefferedLanguage'          EQUALITY caseIgnoreMatch       SUBSTR 
caseIgnoreSubstringsMatch  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )

Was mache ich falsch?

Antwort1

Ich habe es gelöst.

Alles nach olcObjectClasses: müsste als einzelne Zeile gelesen werden, wurde es aber nicht. Das lag an der Art und Weise, wie ich die Zeilen in der ldif-Datei angeordnet hatte. Unten sehen Sie die Arbeitsdatei. (Das Hinzufügen eines Leerzeichens vor einer Zeile zeigt an, dass es sich um eine Fortsetzung der vorherigen Zeile handelt.)

dn: cn={4}wso2Person,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
  NAME 'wso2Person'
  DESC 'wso2Person'
  SUP inetOrgPerson
  STRUCTURAL
  MAY ( gender $ country $ nickName $ timeZone $ dateOfBirth $ role $ im $ 
  url $ otherPhone $ privatePersonalIdentifier $ profileconfiguration $ 
  prefferedLanguage))

Der Grund, warum es nicht gelesen wurde, als ich den Rest des Schemas hinzufügte, war ein zusätzlicher Zeilenumbruch an einer unpassenden Stelle. Zwischen dem Hinzufügen der olcObjectClasses und dem Rest des LDIF-Inhalts gab es eine leere Zeile. Siehe unten.

[..]
olcAttributeTypes: {11}( 1.3.6.1.4.1.37505.1.13       NAME 
'prefferedLanguage'          EQUALITY caseIgnoreMatch       SUBSTR 
caseIgnoreSubstringsMatch  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )

olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
[...]

verwandte Informationen