[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Invalid structural object class chain



Tibbetts, Ric writes:
> The situation, if I'm adding new users, and use the following combination:
> 
> {printf "objectClass: top\n"} \
> {printf "objectClass: person\n"} \
> {printf "objectClass: account\n"} \
> {printf "objectClass: organizationalPerson\n"} \
> {printf "objectClass: inetOrgPerson\n"} \
> {printf "objectClass: posixAccount\n"} \
> .
> ldap_add: Object class violation (65)
>          additional info: invalid structural object class chain 
> (person/account)

Yes.  You have a structural object class _tree_ which ends in both
account and in inetOrgPerson.  It may only end in one object class.

> Of course, if I move "account" around, the invalid chain changes
> accordingly. If I remove "account", the problem goes away. But I'd
> like to keep it in.

In that case you must add a structural object class which is a subclass
of both inetOrgPerson and account.  E.g.

objectclass ( <oid> NAME 'personalAccount'
	SUP ( inetOrgPerson $ account ) STRUCTURAL )

The other alternative is to remove account after all, and instead add
another object class which contains the attributes you want from
account.

BTW, I don't think you need to list subclasses of classes you add.
I believe they are added automatically.  That is, you only need
{printf "objectClass: personalAccount\n"} \
{printf "objectClass: posixAccount\n"} \

-- 
Hallvard