Sergey wrote:
Тогда так: dn: uid=joe,ou=People,dc=mylan,dc=net changetype: modify add: objectclass objectclass: account - add: host host: workA host: workBldap_initialize( ldap://localhost )Enter LDAP Password: add objectclass:account add host: apex.csu.ac.ru modifying entry "uid=srg,ou=People,dc=csu,dc=ac,dc=ru" ldapmodify: update failed: uid=srg,ou=People,dc=csu,dc=ac,dc=ru ldap_modify: Object class violation (65) additional info: invalid structural object class chain (inetOrgPerson/account) :-(
Есть такое дело - уже забыл. На сколько я помню, это началось с openldap 2.x - каждая запись может содержать только один структурный (structural) класс. Таким образом, не прибегая к каким-либо уловкам, не удасться создать запись содержащую одновременно класс account и inetOrgPerson, потому что они оба структурные. Как я понял, стандартным решением подразумевается заведение нескольких записей вместо одной - что-то вроде uid=user,ou=peoples,o=org с objectclass inetOrgPerson и uid=user,ou=accounts,o=org с objectclass account. Это решение, конечно, нельзя назвать удобным, поэтому я предпочел иное - модифицировал все схемы, поменяв STRUCTURAL на AUXILIARY, и создал собственный единственный STRUCTURAL-класс, который использую во всех записях. Есть еще один вариант - использование класса extensibleObject - запись с таким классом может содержать любой атрибут без включения соответсвующего класса.
-- Due to lack of disk space, this fortune database has been discontinued.