Если в записи есть другие olcAttributeTypes
, тогда вам нужно сделать заменить
не добавить
и перечислить все остальные атрибуты уже в LDAP.
Попробуйте использовать ldapvi
для редактирования, он сделает это автоматически.
РЕДАКТИРОВАТЬ: Если это не сработает, вам нужно остановить slapd
и отредактируйте файлы в /etc/ldap/slap.d/
вручную. Это определенно не решение, когда изменения происходят относительно часто ...
Схема редактирования в cn = config
- это новая функция, возможно, вы обнаружили ошибку (возможно, уже исправленную в последней версии) . Проверьте журнал изменений OpenLDAP и попробуйте использовать последнюю версию.
Я до сих пор наблюдаю такое же поведение в OpenLDAP на Ubuntu. Я пытался заменить сертификат SSL в моем экземпляре OpenLDAP и обнаружил, что указания на вики-сайте Ubuntu не работают:
https://help.ubuntu.com/lts/serverguide/openldap-server.html# openldap-tls
В частности, эти инструкции:
Создайте файл certinfo.ldif со следующим содержимым (настройте соответственно, в нашем примере предполагается, что мы создали сертификаты, используя https://www.cacert.org ):
dn: cn = config changetype: изменить заменить: olcTLSCACertificateFile файл olcTLSCACertificate: /etc/ssl/certs/cacert.pem - заменить: olcTLSCertificateFile файл olcTLSCertificate: /etc/ssl/certs/ldap01_slapd_cert.pem - заменить: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/ldap01_slapd_key.pem
Используйте команду ldapmodify, чтобы сообщить slapd о нашей работе TLS через База данных slapd-config:
sudo ldapmodify -Y EXTERNAL -H ldapi: /// -f /etc/ssl/certinfo.ldif
(Обратите внимание, что я изменил исходные команды добавления для замены, но исходные команды добавления также не работали при новой установке).
Я нашел techNote на этом сайте CentOS:
2.2.2.2. Ограничения на изменение записей и атрибутов конфигурации
При изменении записей сервера и атрибуты:
Запись cn = monitor и ее дочерние записи доступны только для чтения и не могут быть изменены, кроме как для управления ACI. Если атрибут добавлен в cn = config, сервер игнорирует его. Если для атрибута введено недопустимое значение, сервер его игнорирует. Поскольку ldapdelete используется для удаления всей записи, используйте ldapmodify для удаления атрибута из записи.
Похоже, в этой заметке говорится, что вы не можете добавлять атрибуты в cn = config с помощью ldapmodify. Я думал, что вы изменили cn = config с помощью ldapmodify.
Я видел другие сообщения, которые, кажется, указывают на такое положение вещей. Я задал вопрос в списке рассылки OpenLDAP и буду обновлять свое сообщение любыми полученными ответами.