在OpenLDAP中更改BaseDN

Tri*_*yen 6 debian rename openldap

我试图重命名我的OpenLDAP的baseDN

从:

DC = ABC,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

但是在我重新启动slapdlighttpd服务之后,即使我可以登录到phpLDAPAdmin(admin binddn)的管理界面,但我无法做任何事情.

我也尝试运行一些ldap命令行,但它不起作用.

还有什么我需要做的?或者我的方法有什么问题?

Tri*_*yen 16

好的,我自己解决了.以下是我将当前LDAP数据库迁移到新域的方法:

  • 将旧LDAP数据库导出到ldif文件.
  • 删除旧数据库
  • 使用新域名创建新的LDAP数据库
  • 修改上面导出的ldif文件以适应新域(root dn)
  • 将修改后的ldif文件导入新数据库

假设我有一个新域名,dc = my,dc = new,dc = ldap,dc = domain,我想将所有现有LDAP数据移动到新域名.

我做了以下步骤

  1. 备份旧的LDAP数据库

    # slapcat -v -l old_ldap.ldif
    
    Run Code Online (Sandbox Code Playgroud)
  2. 停止OpenLDAP服务器

    # service slapd stop
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除旧的LDAP数据库

    # cd /var/lib/ldap
    # rm -rf *
    
    Run Code Online (Sandbox Code Playgroud)
  4. 确保LDAP未运行

    # nano /var/lib/ldap/DB_CONFIG
    
    Run Code Online (Sandbox Code Playgroud)

    注意:添加以下这些行并保存

    #DB_CONFIG
    set_cachesize           0 150000000 1
    set_lg_regionmax        262144
    set_lg_bsize            2097152
    set_flags               DB_LOG_AUTOREMOVE
    
    Run Code Online (Sandbox Code Playgroud)
  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"
      ...
      
      Run Code Online (Sandbox Code Playgroud)
    • /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>
      ...
      
      Run Code Online (Sandbox Code Playgroud)
  6. 准备新的LDAP目录结构,数据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
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  7. 测试新的ldif

    # slapadd -b "dc=my,dc=new,dc=ldap,dc=domain" -v -u -l new_ldap.ldif 
    
    Run Code Online (Sandbox Code Playgroud)

    注意:-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! 
Run Code Online (Sandbox Code Playgroud)
  1. 将新的LDAP数据添加到服务器

    # slapadd -b "dc=my,dc=new,dc=ldap,dc=domain" -v -l new_ldap.ldif
    
    Run Code Online (Sandbox Code Playgroud)

您可以在我的博客文章中查看有关此问题的更新:http://iambusychangingtheworld.blogspot.com/2013/10/ldap-create-new-ldap-directory.html