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?
Thanks. Tamer
openldap-technical@openldap.org