А именно, должен добавить я 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 незначительно в лучшем случае таким образом, любая справка ценится!Спасибо.
Разобрался; Примеры, которые я использовал, были ориентированы на другой дистрибутив с немного другой конфигурацией - я использую 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
- лучший метод.
Честно говоря, не стоит возиться со стандартными классами объектов. То, как вы ответили на свой вопрос , работает ; однако ПУТЬ лучше определить вашу собственную локальную схему либо с новым классом структурных объектов (который может унаследоваться от другого), либо определить вспомогательный класс объектов и добавить его к вашим узлам.
Я уже ответил на аналогичный вопрос здесь: Проблемы Openldap с добавлением атрибута
Вы можете найти более чистые способы решения вашей проблемы там.