Another option, perhaps less desirable than the one suggested by
Hallvard, is to alter the 'account' object in cosine.schema from:
objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account'
SUP top STRUCTURAL
MUST userid
MAY ( description $ seeAlso $ localityName $
organizationName $ organizationalUnitName $ host )
)
to:
objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account'
SUP top AUXILIARY
MUST userid
MAY ( description $ seeAlso $ localityName $
organizationName $ organizationalUnitName $ host )
)
Cheers,
Brent
On Wed, 2003-07-09 at 10:45, Hallvard B Furuseth wrote:
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"} \