Hi,
I used the below ldif file to add a user defined objectclass in my openldap 2.4.40 on CentOS 7.
-----------------------------------------------------------------------
dn:
cn={12}ng911,cn=schema,cn=config
changetype: add
objectClass: olcSchemaConfig
cn: ng911
dn:
cn={12}ng911,cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: (
1.3.6.1.4.1.42.2.27.4.1.6.8.12 NAME 'cityCode' DESC 'city plate' EQUALITY
caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcAttributeTypes: (
1.3.6.1.4.1.42.2.27.4.1.6.8.14 NAME 'identityNumber' DESC 'id number' EQUALITY
caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcAttributeTypes: (
1.3.6.1.4.1.42.2.27.4.1.6.8.16 NAME 'institutionName' DESC 'institution name'
EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: (
1.3.6.1.4.1.42.2.27.4.1.6.8.18 NAME 'phoneNumber' DESC 'phone' EQUALITY
caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcAttributeTypes: (
1.3.6.1.4.1.42.2.27.4.1.6.8.20 NAME 'agentId' DESC 'agent id' EQUALITY
caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcAttributeTypes: (
1.3.6.1.4.1.42.2.27.4.1.6.8.22 NAME 'agentPassword' DESC 'agent passwd'
EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.4203.1.1.2 )
-
add: olcObjectClasses
olcObjectClasses: ( 1.3.6.1.4.1.42.2.27.4.3.6 NAME
'ng911' DESC 'Container for ng911 object' SUP inetOrgPerson MAY ( cityCode $
identityNumber $ institutionName $ phoneNumber & agentId &
agentPassword ) )
-----------------------------------------------------------------
And then I run the command on the server
ldapmodify
-Q -Y EXTERNAL -H ldapi:/// -f extendtong911.ldif
The addition was ok. But I made a mistake and run the same command again which added another copy of the objectclass. The result of the command below is given underneath it
ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config cn
-----------------------------------------------------------------
dn: cn=schema,cn=config
cn: schema
dn: cn={0}core,cn=schema,cn=config
cn: {0}core
dn: cn={1}cosine,cn=schema,cn=config
cn: {1}cosine
dn: cn={2}nis,cn=schema,cn=config
cn: {2}nis
dn: cn={3}inetorgperson,cn=schema,cn=config
cn: {3}inetorgperson
dn: cn={4}ng911,cn=schema,cn=config
cn: {4}ng911
cn: {12}ng911
dn: cn={5}ng911,cn=schema,cn=config
cn: {5}ng911
cn: {12}ng911
-----------------------------------------------------------------
Now, I want to delete the second objectclass created. For this I created an ldif file with the contents as below:
-----------------------------------------------------------------
dn:
cn={5}ng911,cn=schema,cn=config
changetype: modify
delete: olcObjectClasses
olcObjectClasses: ( 1.3.6.1.4.1.42.2.27.4.3.6 NAME
'ng911' DESC 'Container for ng911 object' SUP inetOrgPerson MAY ( cityCode $
identityNumber $ institutionName $ phoneNumber & agentId &
agentPassword ) )
-----------------------------------------------------------------
And I run the command
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f deleteng911.ldif
on the server. The result is:
-----------------------------------------------------------------
modifying entry "cn={5}ng911,cn=schema,cn=config"
ldap_modify: No such attribute (16)
additional info: modify/delete: olcObjectClasses: no such attribute
-----------------------------------------------------------------
When I change {5} to {12} I get
-----------------------------------------------------------------
modifying entry "cn={12}ng911,cn=schema,cn=config"
ldap_modify: No such object (32)
matched DN: cn=schema,cn=config
-----------------------------------------------------------------
I tried many modifications of the ldif file but couldn't succeed. Can you help me writing the right ldif file for deletion of an objectclass?