Атрибут memberLDf OpenLDAP не обновляется после обновления группы

8

У меня есть установка OpenLDAP в Debian 7.1 (OpenLDAP 2.4.31), и я пытаюсь настроить оверлей memberof. Моя конфигурация такая же, как я читал на многих сайтах по всему Интернету, однако она все равно не работает для меня.

Проблема в том, что атрибуты memberOf сущностей обновляются только при создании группы, но не обновляются при изменении или удалении группы. На самом деле эту же проблему когда-то уже задавали здесь: как настроить обслуживание обратного членства в группах на сервере openldap? (memberOf) , но даже если он отмечен как отвеченный, я не смог найти никакой полезной информации в ответах. (Даже оригинальный постер не мог ничего сделать с ответами согласно комментариям ...)

Моя конфигурация такая: cn = config / cn = module {0} .ldif

dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof
structuralObjectClass: olcModuleList

А для модуля: cn = config / olcDatabase = {1} hdb / olcOverlay = {0} memberof.ldif

dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
olcMemberOfRefInt: TRUE

Группа, которую я добавляю:

dn: cn=test,ou=services,dc=x,dc=y
cn: test
objectClass: groupOfNames
objectClass: top
description: test group
member: cn=Almafa Teszt,ou=users,dc=x,dc=y

Запрос, который я запускаю:

$ ldapsearch -LLL -h localhost -x -D cn=admin,dc=x,dc=y -b u=users,dc=x,dc=y -W  '(memberOf=cn=test,ou=services,dc=x,dc=y)' memberOf

Таким образом, проблема не в том, как запросить атрибут, а в том, что после изменения или удаления группы результат поиска не меняется ...

Обновление : Что касается ответа Брайана, я также настроил наложение рефинтов со следующей конфигурацией:

$ ldapsearch -LLL -b cn=module{0},cn=config
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
olcModuleLoad: {2}refint

$ ldapsearch -LLL -b olcOverlay={1}refint,olcDatabase={1}hdb,cn=config
dn: olcOverlay={1}refint,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner

Но он не исправил член наложения и не работал сам по себе. Когда я изменил имя члена группы, атрибут участника группы не был обновлен. Могут ли эти две проблемы быть связаны?

Питер Б
источник
Вы выяснили эту проблему? Я получаю то же самое.
Итан Сюй
@YangXu - нет, я не мог решить эту проблему в то время, и просто пошел другим путем, не используя плагин memberOf. Затем несколько месяцев назад мне пришлось установить нечто подобное на другом сервере, и там это сработало впервые. Теперь я сравнил конфигурацию нового сервера с конфигурацией, которую я поместил здесь, и единственное отличие, которое я могу заметить, состоит в том, что на новом сервере внутренняя база данных - это mdb, тогда как в этом старом случае это hdb. Какой из них вы используете? Если hdb, не могли бы вы попробовать перейти на mdb? Если это решит проблему, не могли бы вы ответить на этот вопрос? Спасибо!
Питер Б.

Ответы:

0

Похоже, вам может понадобиться настроить наложение refint, которое помогает поддерживать ссылочную целостность каталога в ситуациях, подобных описанным вами. На http://www.zarafa.com/wiki/index.php/OpenLDAP_referential_integrity есть страница, которая может быть полезна для настройки этого наложения.

Брайан Шоуолтер
источник
На самом деле я уже пробовал наложение refint прежде, так как в некоторых местах они упоминались вместе. Но это не помогло. :( И на самом деле, refint тоже не работает, как будто я переименовываю пользователя, атрибут «member» groupOfNames не обновляется. Может быть, эти две проблемы связаны?
Peter B
Просто чтобы подтвердить, используете ли вы DN записи участника, чтобы указать, что он является членом вашей группы?
Брайан Шоуолтер
Да вроде member: cn=testuser,ou=users,dc=x,dc=y.
Питер Б.
0

У нас была та же проблема (те же симптомы, которые вы описали). Оказалось, что мы отсутствовали olcRootDNв нашем dn: olcDatabase={1}hdb,cn=configДобавлении (например) olcRootDN: cn=admin,cn=configтам.

Stevko
источник