Автор Тема: Перестало работать наложение memberof  (Прочитано 884 раз)

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Добрый день, прошу помощи.


Сегодня выяснил такой момент, что на сервере перестало работать наложение memberof, то есть раньше всё работало и в какой-то момент перестало, в какой точно сказать не могу:( Добавляю или удаляю пользователя из группы, набор атрибутов memberOf у него не меняется.


А вот на реплике всё работает как надо не смотря на то, что конфигурация у них одинаковая.


В итоге на серверах сейчас разный набор атрибутов memberOf у пользователей и я пока не знаю как это исправить и как потом вернуть к нормальному состоянию. В логах ошибок никаких я не вижу.


С каждым разом расснихрон всё больше и больше:(


На всякий случай кину конфиг оверлеев:



dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=domain,dc=ru
olcLastMod: TRUE
olcRootDN: cn=admin,dc=domain,dc=ru
olcRootPW: {SSHA}zjDsG4wlohNoFErCtD22l6jqrV5GwDiI
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbIndex: uniqueMember eq,pres
olcDbIndex: mail,mailAlternateAddress sub,eq,pres
olcDbIndex: cn,uid sub,eq,pres
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
olcDbMaxSize: 1073741824
olcAccess: {0}to attrs=userPassword
  by ssf=128 self write
  by ssf=128 dn="uid=office,ou=Users,dc=domain,dc=ru" write
  by ssf=128 dn="uid=wiki,ou=Users,dc=domain,dc=ru" read
  by ssf=128 dn="cn=ldap04,dc=domain,dc=ru" read
  by ssf=128 anonymous auth
  by ssf=128 * none
olcAccess: {1}to attrs=shadowLastChange
  by ssf=128 self write
  by ssf=128 dn="uid=office,ou=Users,dc=domain,dc=ru" write
  by ssf=128 * read
olcAccess: {2}to *
  by ssf=128 dn="uid=office,ou=Users,dc=domain,dc=ru" write
  by ssf=128 * read
olcLimits: {0}dn.exact="cn=ldap04,dc=domain,dc=ru" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited


dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: {0}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf


dn: olcOverlay={1}refint,olcDatabase={1}mdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner


dn: olcOverlay={2}autogroup,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAutomaticGroups
olcOverlay: {2}autogroup
olcAGattrSet: {0}groupOfURLs memberURL member


dn: olcOverlay={3}dynlist,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcDynamicList
olcOverlay: {3}dynlist
olcDlAttrSet: {0}groupOfUniqueNames labeledURI member


dn: olcOverlay={4}unique,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcUniqueConfig
olcOverlay: {4}unique
olcUniqueURI: ldap:///ou=People,dc=domain,dc=ru?uid?sub
olcUniqueURI: ldap:///ou=People,dc=domain,dc=ru?mail?sub
olcUniqueURI: ldap:///ou=People,dc=domain,dc=ru?uidNumber?sub
olcUniqueURI: ldap:///ou=Users,dc=domain,dc=ru?uid?sub
olcUniqueURI: ldap:///ou=Users,dc=domain,dc=ru?uidNumber?sub


dn: olcOverlay={5}syncprov,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {5}syncprov
olcSpCheckpoint: 500 15


dn: olcOverlay={6}accesslog,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: {6}accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogPurge: 7+00:00 1+00:00
olcAccessLogSuccess: TRUE


Грешил на dn: olcOverlay={3}dynlist,olcDatabase={1}mdb,cn=config, удалил olcDlAttrSet, но это не помогло, да и на реплике это не мешает.


Очень прошу помощи

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Перестало работать наложение memberof
« Ответ #1 : 24 Январь 2018, 09:37:28 »
Удалил учетную запись пользователя, добавил по новой. Добавил в несколько групп, на мастере memberof не появилось, а на реплике рабоает нормально

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Перестало работать наложение memberof
« Ответ #2 : 24 Январь 2018, 11:12:00 »
В общем после перезапуска сервиса наложение заработало, но вот рассинхрон придется устранить вручную, благо групп не много, около 500, напишу скрипт, который всех передобавит.


ЗЫ. Так же после перезапуска стало повлятся сообщение о ограничении вывода, хотя olcSizeLimit был -1. Передобавил ещё раз, вроде работает.


Видимо я вносил какие-то изменения и нужно было после этого перезапустить сервис, хотя я всегда считал что cn=config работает без перезапука, в следствии чего произошла такая ситуация

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 432
    • Просмотр профиля
Re: Перестало работать наложение memberof
« Ответ #3 : 24 Январь 2018, 12:40:48 »
Здравствуйте, Никита!
Такой большой стек наложений, membeof будет в нём обрабатываться последним, так что на каком-то этапе может быть затык. autogroup что-то мутит с атрибутом memberof само по себе, я толком не понял, что именно. dynlist настроено на слежение  за тем же классом, что и memberof, тут  тоже может что-то происходить. Кстати, в dynlist результирующим атрибутом стоит member (а не uniqueMember) -- возможно, это так и надо, но тогда откуда возьмутся memberof =) . В общем, настройки сложные, без olcLogLevel: -1 и тщательного анализа трудно разобраться.

Я не уверен, что работает наложение refint, по идее каждый отслеживаемый атрибут добавляется отдельным значением атрибута olcRefintAttribute. И непонятно, зачем отслеживать атрибут memberof, если он и так отслеживается наложением memberof. Тут тоже может крыться причина затыка.

Егор

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Перестало работать наложение memberof
« Ответ #4 : 24 Январь 2018, 16:02:30 »
Кстати, в dynlist результирующим атрибутом стоит member (а не uniqueMember) -- возможно, это так и надо, но тогда откуда возьмутся memberof =)

Я вообще хочу его переделать на groupOfNames чтобы не было конфликтов, там как раз member для членства используется.

В общем, настройки сложные, без olcLogLevel: -1 и тщательного анализа трудно разобраться.

Надеюсь такого больше не повторится, но в следующий раз включу полный дебаг


Я не уверен, что работает наложение refint, по идее каждый отслеживаемый атрибут добавляется отдельным значением атрибута olcRefintAttribute. И непонятно, зачем отслеживать атрибут memberof, если он и так отслеживается наложением memberof. Тут тоже может крыться причина затыка.


Я так понял refint должен обновить членство в группах если я например сделаю modrdn (смена фамилии к примеру). Я memberOf делал по примерам, ибо своего опыта пока маловато :( , а подробную документацию найти ой как не просто.



Насколько я понимаю оверлеи удалять нельзя?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 432
    • Просмотр профиля
Re: Перестало работать наложение memberof
« Ответ #5 : 26 Январь 2018, 11:52:28 »
Я так понял refint должен обновить членство в группах если я например сделаю modrdn (смена фамилии к примеру).
Да, для этого. А ещё он может удалять соответствующих членов группы, если удаляется запись пользователя. Я постарался осветить эту тему здесь.

Я memberOf делал по примерам, ибо своего опыта пока маловато :( , а подробную документацию найти ой как не просто.
Материал по memberof тоже есть в планах (как и многое другое =) ). Постараюсь сделать в этом году.

Насколько я понимаю оверлеи удалять нельзя?
Когда-то было нельзя, как обстоят дела сейчас -- не знаю. Мне ещё не было нужды удалять наложения =) .

Егор