Изменить BaseDN в OpenLDAP

Я пытался переименовать мой OpenLDAP ' s baseDN

from:

ДК=АВС в,dc=com и

в:

dc=xyz, dc=edu

Я изменил некоторые файлы conf:

  • / etc/ldap / slapd.d / cn=config / olcDatabase={1}hdb.формат ldif

  • /etc/ldapscripts / ldapscripts.conf

и конфигурация phpLDAPadmin:

  • config.в PHP

к новому корневому dn

но после того как я перезапустил файла slapd и lighttpd services, хотя я мог войти в интерфейс администратора phpLDAPAdmin (admin binddn), но я ничего не смог сделать.

Я также попытался запустить некоторые командные строки LDAP, но это не сработало.

Что еще я должен делать? Или что-то не так с моим методом?

2 ответов


хорошо, я решил это сам. Вот как я перенес текущую базу данных LDAP в новый домен:

  • экспорт старой базы данных LDAP в файл ldif.
  • удалить старую databaes
  • создайте новую базу данных LDAP с новым доменным именем
  • измените экспортированный файл ldif выше, чтобы соответствовать новому домену (корневой dn)
  • импортировать измененный файл ldif в новую базу данных

Предположим, у меня есть новый домен имя, dc=мой, dc=новый, dc=ldap, dc=домен, и я хочу переместить все существующие данные LDAP в новый.

я сделал следующие шаги

  1. резервное копирование старой базы данных LDAP

    # slapcat -v -l old_ldap.ldif
    
  2. остановите сервер OpenLDAP

    # service slapd stop
    
  3. удалить старую базу данных LDAP

    # cd /var/lib/ldap
    # rm -rf *
    
  4. убедитесь, что LDAP не бег!--17-->

    # nano /var/lib/ldap/DB_CONFIG
    

    Примечание: добавить следующие строки и сохраните

    #DB_CONFIG
    set_cachesize           0 150000000 1
    set_lg_regionmax        262144
    set_lg_bsize            2097152
    set_flags               DB_LOG_AUTOREMOVE
    
  5. измените текущие настройки LDAP в следующих файлах

    • /etc/ldapscripts/ldapscripts.conf

      ...
      SERVER="ldap://localhost"
      BINDDN="cn=admin,dc=my,dc=new,dc=ldap,dc=domain"
      BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
      ...
      
    • /etc/ldap/slapd.d/cn=config/olcDatabase\={1}hdb.ldif

      ...
      olcSuffix: dc=my,dc=new,dc=ldap,dc=domain
      olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=my,dc=new,dc=ldap,dc=domain" write by * none
      olcAccess: {2}to * by self write by dn="cn=admin,dc=my,dc=new,dc=ldap,dc=domain" write by * read
      olcRootDN: cn=admin,dc=my,dc=new,dc=ldap,dc=domain
      olcRootPW: <new administrator password>
      ...
      
  6. подготовьте новую структуру каталогов LDAP, data,new_ldap.ldif (или изменить old_ldap.ldif С Новым dn)

    # Root
    dn:                    dc=my,dc=new,dc=ldap,dc=domain
    description:           New LDAP BaseDN
    dc:                    parent
    o:                     parent.my.new.ldap.domain
    objectClass:           top
    objectClass:           dcObject
    objectClass:           organization
    structuralObjectClass: organization
    
    # administrator
    dn:                    cn=admin,dc=my,dc=new,dc=ldap,dc=domain
    objectClass:           simpleSecurityObject
    objectClass:           organizationalRole
    cn:                    admin
    description:           LDAP administrator
    userPassword:          <new administrator password>
    structuralObjectClass: organizationalRole
    
    # Subtree for Users
    dn:                    ou=Users,dc=my,dc=new,dc=ldap,dc=domain
    ou:                    Users
    description:           Parent Ldap Users
    objectClass:           organizationalUnit
    objectClass:           top
    structuralObjectClass: organizationalUnit
    
    # Subtree for Groups
    dn:                    ou=Groups,dc=my,dc=new,dc=ldap,dc=domain
    ou:                    Groups
    description:           Parent LDAP Groups
    objectClass:           organizationalUnit
    objectClass:           top
    structuralObjectClass: organizationalUnit
    ...
    
  7. Проверьте новый ldif

    # slapadd -b "dc=my,dc=new,dc=ldap,dc=domain" -v -u -l new_ldap.ldif 
    

    Примечание: the -u означает выполнение команды в тестовом режиме

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

    added: "dc=my,dc=new,dc=ldap,dc=domain"
    added: "cn=admin,dc=my,dc=new,dc=ldap,dc=domain"
    added: "ou=Users,dc=my,dc=new,dc=ldap,dc=domain"
    added: "ou=Groups,dc=my,dc=new,dc=ldap,dc=domain"
    _#################### 100.00% eta   none elapsed            none fast! 
  1. добавить новые данные LDAP на сервер

    # slapadd -b "dc=my,dc=new,dc=ldap,dc=domain" -v -l new_ldap.ldif
    

вы можете следить за обновлениями в моем блоге об этой проблеме: http://iambusychangingtheworld.blogspot.com/2013/10/ldap-create-new-ldap-directory.html


очень полезное руководство! Для справки, я обнаружил, что: После изменения пункта 5b тест (как описано в пункте 7) сообщит о сбое значения crc32 (контрольная сумма находится в строке 2 того же файла);

изменить 06/2/2018: Согласно предложению PF4Public, вы можете удалить эти строки в целом.

в любом другом случае: И вам придется создать новый crc32 (я использую Debian Jessy, ваш путь может быть другим)

быстро маршрут:

tail -n +3 /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}mdb.ldif

и вставка результата внутри онлайн-калькулятора crc32. Вычисленное значение crc32 заменяет старое значение, расположенное в строке 2 mdb.формат ldif.

медленный / тщательный маршрут описан здесь: https://gist.github.com/Shaltz/1d65a07a0901a36fb7f1

после добавления new_ldap.ldif убедитесь, что пользователь openldap имеет права на созданную базу данных.

chown -R openldap:openldap /var/lib/ldap