Это продолжение этот вопрос: я добавил член наложения к существующему серверу OpenLDAP 2.4. Теперь я хочу обновить существующие пользовательские объекты.
Для нового членства в группах атрибут memberOf обновляется правильно. Но у меня есть несколько существующих групп, которые не обновляются автоматически. Я мог бы удалить всех пользователей из их групп и снова добавить их, чтобы убедиться, что эти записи синхронизированы. Поскольку это Корпоративный Сервер Univention который творит много волшебства при изменении LDAP, я не хочу рисковать сломать свой каталог.
Есть ли способ обмануть наложение для обновления этих операционных атрибутов?
Я думаю бегать slapindex
решит вашу проблему. По крайней мере, это звучит очень похоже на то, что происходит, когда вы добавляете новый индекс в вашу систему. Вы получите забавные результаты, если не выполните переиндексирование старых записей.
Обратите внимание, что при запуске сервер openldap должен быть остановлен. И вы должны либо запустить его как slapd
user (например, openldap) или запустите его как root и измените разрешения после слов.
/etc/init.d/slapd stop
slapindex
chown openldap:openldap /var/lib/ldap/*
/etc/init.d/slapd start
или
/etc/init.d/slapd stop
su - openldap -c slapindex
/etc/init.d/slapd start
пожалуйста, прочтите man-страницы slapindex перед запуском этого. И это должно быть безопасно, если у вас нет поврежденной базы данных. (просто не забудьте проверить права доступа к файлам перед Начало)
Команды того, как вы останавливаете и запускаете свои услуги, будут зависеть от вкуса ОС, который вы используете.
Единственный раз, когда memberOf
оверлей будет активирован, если вы измените члена в группе. Итак, единственный способ "обмануть" его в обновлении memberOf
Атрибуты действительно были бы для удаления всех пользователей из их групп и повторного добавления их, как вы предложили.
Альтернативой может быть использование внешнего инструмента для синхронизации групп и записей их членов.
Вы можете написать свой собственный сценарий для этого - что-нибудь вроде «для каждой группы, прочитать участников, для каждого члена, запустить операцию LDAP« изменить », чтобы« добавить »значение к атрибуту memberOf записи этого члена.
Или, что более надежно, вы можете использовать такой инструмент, как LSC (Соединитель синхронизации LDAP), в котором почти все уже сделано: вам просто нужно настроить нужное сопоставление. Уловка с LSC заключается в том, чтобы использовать один и тот же сервер LDAP в качестве источника и назначения и проходить через всех пользователей, чтобы убедиться, что атрибут memberOf содержит список групп, который является результатом поиска во всех группах элемента member =. На сайте LSC есть учебник, чтобы сделать этовроде как, но немного устарело.
Для Корпоративный Сервер Univention видеть https://help.univention.com/t/memberof-attribute-group-memberships-of-user-and-computer-objects/6439 , оно имеет инструмент сделай это. Для всех остальных: инструмент использует простой трюк, чтобы запустить OpenLDAP для обновления атрибутов memberOf: он просто выполняет поиск (uniqueMember = *) и заменяет значение тем же значением. По сути, это ошибка, но OpenLDAP обрабатывает ее, как и любые другие реальные изменения.