Я хотел бы добавить собственные атрибуты в OpenLDAP, но, возможно, я не понимаю концепции. Я сделал следующее:
Я создал custom.schema
attributetype ( 1.3.6.1.4.1.4203.666.100.122
NAME ( 'dateOfBirth' )
SUP name
)
attributetype ( 1.3.6.1.4.1.4203.666.100.123
NAME ( 'IPPhone' )
SUP name
)
objectclass ( 1.3.6.1.4.1.4203.666.100.1
NAME 'customAttributes'
DESC 'Custom attributes class'
)
Я добавил в slapd.conf
include /usr/local/etc/openldap/schema/custom.schema
А теперь я хотел бы назначить этот объектный класс каждому uid, который есть в текущей базе данных. Итак, я сбросил db, добавил атрибут объектного класса к некоторому uid, и при импорте LDIF ldap говорит:
65) invalid structural object class chain (inetOrgPerson/customAttributes)
Запись LDIF выглядит так:
dn: dc=sss,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: sss.com
dc: sss
structuralObjectClass: organization
dn: ou=People,dc=sss,dc=com
objectClass: organizationalUnit
ou: People
structuralObjectClass: organizationalUnit
dn: uid=zzz,ou=People,dc=sss,dc=com
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: customAttributes
structuralObjectClass: inetOrgPerson
...
Не могли бы вы сориентироваться, как мне добавить эти настраиваемые атрибуты?
Как видно из недопустимая цепочка классов структурных объектов ошибка, указывающая на нарушение правила STRUCTURAL objectClass. Без заявления об обратном ваш объектный класс customAttributes рассматривается как СТРУКТУРНЫЙ объектный класс, которым он не может быть, и по-прежнему работает вместе с inetOrgPerson. Я бы рекомендовал попробовать изменить вашу схему на что-то вроде следующего:
objectclass ( 1.3.6.1.4.1.4203.666.100.1
NAME 'customAttributes'
AUXILIARY
DESC 'Custom attributes class'
MAY (dateofBirth $ IPPhone)
)
Для дальнейшего объяснения я прочитал о распространенных причинах ошибок в Руководство по LDAP. Помимо этого, беглый взгляд на схему, которую вы пытаетесь создать, может потребовать дополнительных размышлений об организации. Обычно рекомендуется располагать сущности objectClass под одним деревом, а сущности attributeType - под другим, чтобы избежать путаницы и коллизий.
ваш новый объектный класс должен ссылаться на новые атрибуты. Обычно делается в виде предложения MAY
objectclass ( 1.3.6.1.4.1.4203.666.100.1
NAME 'customAttributes'
DESC 'Custom attributes class'
MAY (dateofBirth $ IPPhone)
)
Могут быть и другие требования. В Руководство администратора OpenLDAP это лучшее место для начала. здесь Информация о классе
Вы изменили схему в соответствии с сообщениями выше? И, кроме того, доступен ли файл .schema для чтения и есть ли у него правильные разрешения?
Выдает ли системный журнал (или файл журнала slapd) какие-либо ошибки при перезапуске?