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

Ошибка «нет правила сопоставления равенства» при редактировании наложения LDAP Syncprov

У меня есть сервер OpenLDAP OLC (2.4.23), к которому я пытаюсь просто добавить два атрибута в файл наложения Syncprov, но у меня возникают некоторые трудности.

Вот содержимое файла olcOverlay = {0} syncprov.ldif:

# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\={1}bdb/olcOverlay\={0}syncprov.ldif

dn: olcOverlay={0}syncprov
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 100 60
olcSpNoPresent: TRUE
olcSpReloadHint: TRUE
structuralObjectClass: olcSyncProvConfig
entryUUID: 727d29d6-cc5c-1032-89d0-2fc7acd5ca31
creatorsName: cn=config
createTimestamp: 20131018161654Z
entryCSN: 20131018161654.036436Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20131018161654Z

И я пытаюсь применить этот LDIF:

# cat SyncprovOverlayAdd2.ldif

dn: olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config
changetype: modify
add: olcSpCheckpoint
olcSpCheckpoint: 100 30
-
add: olcSpSessionlog
olcSpSessionlog: 1000

Ошибка:

# ldapadd -v -f SyncprovOverlayAdd2.ldif -D "cn = config" -H "ldap: //ldap01.lab.com" -W -x

ldap_initialize( ldap://ldap01.lab.com:389/??base )
Enter LDAP Password: 
add olcSpCheckpoint:
    100 30
add olcSpSessionlog:
    1000
modifying entry "olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config"
ldap_modify: Inappropriate matching (18)
    additional info: modify/add: olcSpCheckpoint: no equality matching rule

Я получаю ту же ошибку, если вызываю ее с помощью ldapmodify. Я использую неправильные директивы или атрибуты добавления / изменения?

Дальнейшие попытки устранения неполадок:

Я попытался изменить LDIF без директив «add:», чтобы он выглядел так:

dn: olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config
changetype: add
olcSpCheckpoint: 100 30
olcSpSessionlog: 1000

Но когда я это сделаю, я получаю другую ошибку:

add olcSpCheckpoint:
    100 30
add olcSpSessionlog:
    1000
adding new entry "olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config"
ldap_add: Object class violation (65)
    additional info: no objectClass attribute

Я не очень хорошо разбираюсь в этих живых изменениях OLC, и когда вам нужно добавить / изменить / заменить, когда "changetype" должен быть установлен явно, когда вам нужно указать объектный класс при использовании ldapadd / ldapmodify для существующей записи , и т.д.

Ссылка: Этот вопрос ServerFault был ответ, в котором предлагалось заменить «добавить» на «заменить» для этой ошибки, но это не сработало для меня.

Чтобы это исправить, должны были произойти две вещи. У меня уже была запись olcSpCheckpoint (но не запись olcSpSessionLog) в файле конфигурации наложения (olcOverlay = {0} syncprov.ldif), поэтому мне нужно было изменить мое "add:" на "replace:" для olcSpCheckpoint, например :

# cat SyncprovOverlayAdd2.ldif

dn: olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config
changetype: modify
replace: olcSpCheckpoint
olcSpCheckpoint: 100 30
-
add: olcSpSessionlog
olcSpSessionlog: 1000

Таким образом, ссылка ServerFault, на которую я указал с пометкой «Ссылка:» в нижней части OP, действительно была правильной, но я не смог сначала проверить ее, поскольку возникла вторая проблема (и я все еще получал сообщения об ошибках после исправление LDIF).

Итак, во-вторых, даже после того, как я исправил LDIF, я получал сообщения об ошибках, что он не может изменить запись (к сожалению, я потерял точные сообщения, которые появлялись в терминале) при попытке применить LDIF с ldapmodify, но у меня была роскошь клонирования виртуальная машина, на которой был мой сервер LDAP, чтобы я мог играть с ее копией вне производства. И когда я запустил ту же команду ldapmodify в клоне виртуальной машины, она успешно применила LDIF. Итак, мой единственный вывод заключался в том, что slapd по какой-то странной причине завис на рабочем сервере и его необходимо перезапустить. Я пытался избежать этого на своем производственном LDAP-сервере с единственной точкой отказа (который, кроме того, должен был быть полностью OLC, чтобы предотвратить такие вещи, как перезапуск slapd), но я укусил пулю и перезапустил slapd на сервере LDAP. и после этого мои изменения прошли без проблем.

Это http://www.openldap.org/its/index.cgi/?findid=8616 что будет исправлено в выпуске OpenLDAP 2.4.47.