0

I have created new schema which looks like this

attributetype ( 2.25.3236588
        NAME 'x-candidateNumber'
        DESC 'Candidate number'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )


attributetype ( 2.25.3536282
        NAME 'x-candidateFullName'
        DESC 'Candidate name'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.25.6587875
        NAME 'x-candidateTitleBeforeName'
        DESC 'Candidate title before name'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.25.6164147
        NAME 'x-candidateTitleAfterName'
        DESC 'Candidate title after name'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.25.1702122
        NAME 'x-candidateBirthNumber'
        DESC 'Candidate title after name'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.25.3134432
        NAME 'x-candidateListedAt'
        DESC 'Candidate listed at'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.25.3682754
        NAME 'x-candidateErasedAt'
        DESC 'Candidate erased at'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.25.5497561
        NAME 'x-candidateNote'
        DESC 'Candidate note'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.25.9736218
        NAME 'x-candidateStatus'
        DESC 'Candidate status'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

objectclass ( 2.25.1798306
        NAME 'ekcrCandidate'
        DESC 'RFC1274: simple security object'
        SUP ( top $ person $ organizationalPerson $ inetOrgPerson )
        STRUCTURAL
        MUST (cn $ ou)
        MAY ( x-candidateNumber $ x-candidateFullName $ x-candidateTitleBeforeName $
                x-candidateBirthNumber $ x-candidateTitleAfterName $ x-candidateListedAt $
                x-candidateErasedAt $ x-candidateNote $ x-candidateStatus
         ))

I added this schema into schema_convert.conf file:

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/pmi.schema
include /etc/ldap/schema/ekcrconcipient.schema
include /etc/ldap/schema/ekcrcandidate.schema
include /etc/ldap/schema/ekcrlegalofficer.schema

Then I converted the schema into an ldif file

slaptest -f schema_convert.conf -F /tmp/ldif_output

It generated a file which I modified as explained here in step 4. Resulting cn={14}ekcrlegalofficer.ldif file now looks like this:

dn: cn=ekcrlegalofficer
objectClass: olcSchemaConfig
cn: ekcrlegalofficer
olcAttributeTypes: {0}( 2.25.7702021 NAME 'x-legalOfficerNumber' DESC 'Legal o
 fficer number' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{
 32768} )
olcAttributeTypes: {1}( 2.25.960171 NAME 'x-legalOfficerFullName' DESC 'Legal
 officer name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{3
 2768} )
olcAttributeTypes: {2}( 2.25.196694 NAME 'x-legalOfficerTitleBeforeName' DESC
 'Legal officer title before name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1
 .1466.115.121.1.15{32768} )
olcAttributeTypes: {3}( 2.25.7643140 NAME 'x-legalOfficerTitleAfterName' DESC
 'Legal officer title after name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.
 1466.115.121.1.15{32768} )
olcAttributeTypes: {4}( 2.25.1064416 NAME 'x-legalOfficerListedAt' DESC 'Legal
  officer listed at' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.
 1.15{32768} )
olcAttributeTypes: {5}( 2.25.1005975 NAME 'x-legalOfficerErasedAt' DESC 'Legal
  Officer erased at' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.
 1.15{32768} )
olcAttributeTypes: {6}( 2.25.5513419 NAME 'x-legalOfficerNote' DESC 'Legal Off
 icer note' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{3276
 8} )
olcAttributeTypes: {7}( 2.25.4535859 NAME 'x-legalOfficerStatus' DESC 'Legal O
 fficer status' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{
 32768} )
olcObjectClasses: {0}( 2.25.6182638 NAME 'ekcrLegalOfficer' DESC 'RFC1274: sim
 ple security object' SUP ( top $ person $ organizationalPerson $ inetOrgPerso
 n ) STRUCTURAL MUST ( cn $ ou ) MAY ( x-legalOfficerNumber $ x-legalOfficerFu
 llName $ x-legalOfficerTitleBeforeName $ x-legalOfficerTitleAfterName $ x-leg
 alOfficerListedAt $ x-legalOfficerErasedAt $ x-legalOfficerNote $ x-legalOffi
 cerStatus ) )

Then I tried to add this new objectClass with

ldapadd -D "cn=admin,cn=config" -W -f cn={14}ekcrlegalofficer.ldif

which resulted in this

ldap_add: Server is unwilling to perform (53)
        additional info: no global superior knowledge

I understood, this error might occur when you are trying to add new record into wrong database but since I'm trying to create new object class this shouldn't be my case.

It actually worked for me in the past, but then I reconfigured my openLDAP server using

dpkg-reconfigre slapd

and since then I'm facing this issue.

I'm stucked on this on third day now and I'm really desperate, I would be really gratefull for any help.

1 Answer 1

1

The first problem I see is that you're trying to create an object with this distinguishedName:

dn: cn=ekcrlegalofficer

That's invalid; the schema needs to exist "inside" an existing hierarchy. The "no global superior knowledge" error means "I have no idea where to place this object".

Take a look at the existing schemas, which will look something like:

dn: cn={0}core,cn=schema,cn=config

You probably want your dn to look like:

dn: cn=ekcrlegalofficer,cn=schema,cn=config
1
  • Yes, it was the problem, thank you!
    – jnd
    Commented Apr 24, 2023 at 13:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .