Назад | Перейти на главную страницу

Как изменить основные атрибуты OpenLDAP

В частности, мне нужно добавить ORDERING caseIgnoreOrderingMatch к givenName и surname атрибуты. Я надеялся, что есть способ сделать это, используя ldapmodify но у меня не работает следующее (возможно, основная схема доступна только для чтения, но это дает мне синтаксическую ошибку):

$ ldapmodify -QY EXTERNAL -H ldapi:/// <<EOF
dn: cn=Subschema
changetype: modify
delete: attributetypes
attributetypes: ( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: first name
 (s) for which the entity is known by' SUP name )
-
add: attributetypes
attributetypes: ( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: first name
 (s) for which the entity is known by' SUP name ORDERING caseIgnoreOrderingMatch )
-
delete: attributetypes
attributetypes: ( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (family)
  name(s) for which the entity is known by' SUP name )
-
add: attributetypes
attributetypes: ( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (family)
  name(s) for which the entity is known by' SUP name ORDERING caseIgnoreOrderingMatch )
EOF

modifying entry "cn=Subschema"
ldap_modify: Invalid syntax (21)
    additional info: attributetypes: value #0 invalid per syntax
$

Я видел некоторые предложения по редактированию файлов схемы напрямую чего я не хотел делать, но это (остановить slapd, отредактировать /etc/openldap/schema/core.ldif, перезапустите slapd), похоже, не действует.

Есть какие-нибудь указания на то, как это можно сделать? Мои знания LDAP в лучшем случае скудны, поэтому любая помощь приветствуется! Спасибо.

Честно говоря, не стоит возиться со стандартными классами объектов. Как вы ответили на свой вопрос делает работай; однако это ПУТЬ Лучше определить вашу собственную локальную схему либо с новым классом структурных объектов (который может наследовать от другого), либо определить вспомогательный класс объектов и добавить его к вашим узлам.

Я уже отвечал на аналогичный вопрос здесь: Проблемы openldap с добавлением атрибута

Там вы можете найти более чистые способы решения вашей проблемы.

Догадаться; Примеры, которые я использовал, были ориентированы на другой дистрибутив с немного другой конфигурацией - я использую Scientific Linux 6.5. Добавьте к этому мое невежество, и неудивительно, что это не сработало. Вот что сработало:

ldapmodify -QY EXTERNAL -H ldapi:/// <<EOF
dn: cn={1}core,cn=schema,cn=config
changetype: modify
delete: olcAttributeTypes
olcAttributeTypes: {1}( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (f
 amily) name(s) for which the entity is known by' SUP name )
-
add: olcAttributeTypes
olcAttributeTypes: {1}( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (f
 amily) name(s) for which the entity is known by' SUP name ORDERING caseIgnore
 OrderingMatch )
-
delete: olcAttributeTypes
olcAttributeTypes: {35}( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: fir
 st name(s) for which the entity is known by' SUP name )
-
add: olcAttributeTypes
olcAttributeTypes: {35}( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: fir
 st name(s) for which the entity is known by' SUP name ORDERING caseIgnoreOrde
 ringMatch )
EOF

А для прямого редактирования файла путь к файлу был /etc/openldap/slapd.d/cn=config/cn=schema/cn={1}core.ldif но используя ldapmodify это лучший метод.