在OpenLDAP中创建第二个数据库/域

时间:2015-06-17 17:27:56

标签: admin openldap

我有一个带有"dc=domain1,dc=com"的LDAP服务器作为olcSuffix。我想在同一台服务器上创建第二个域"dc=domain2,dc=com"

使用此LDIF文件:

dn: olcDatabase={3}bdb
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {3}bdb
olcSuffix: dc=domain2,dc=com
...

我收到了一个错误:  "no global superior knowledge" error because dc=domain2,dc=com does not fit below the existing dc=domain1,dc=com tree.

我的问题是如何在openldap中并排运行两个独立的域?我是否必须创建"dc=com"根并移动其下的现有"dc=domain1",然后创建"dc=domain2",或者是否在某个服务器上独立支持这两棵树?

1 个答案:

答案 0 :(得分:2)

据我所知,One OpenLDAP服务器可以有多个DIT。我想你想要的是添加一个新的DIT。

要添加新的DIT,您应该:

  1. 为其创建目录,并设置权限。

  2. 向OpenLDAP服务器添加配置。

  3. 添加条目和RootDN。

  4. 我现在使用Ubuntu 14.04.3 LTS,OpenLDAP 2.4.31(由apt-get安装),如果你不使用root帐户,某些命令可能需要sudo。

    首先,为新数据库创建目录

    root@hare:~/ldap# mkdir /var/lib/ldap-bdb
    root@hare:~/ldap# chown openldap:openldap /var/lib/ldap-bdb
    root@hare:~/ldap# vim /etc/apparmor.d/usr.sbin.slapd
    # the databases and logs
    /var/lib/ldap-bdb/ r,
    /var/lib/ldap-bdb/** rwk,
    
    # lock file
    /var/lib/ldap-bdb/alock kw,
    
    root@hare:~/ldap# service apparmor reload
    

    其次,config cn = config

    检查模块

    root@hare:~/ldap# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b 'cn=config' "(objectClass=olcModuleList)"
    dn: cn=module{0},cn=config
    objectClass: olcModuleList
    cn: module{0}
    olcModulePath: /usr/lib/ldap
    olcModuleLoad: {0}back_hdb
    olcModuleLoad: {1}back_mdb
    

    如果未加载back_bdb:

    # file load_bdb.ldif
    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: back_bdb
    
    root@hare:~/ldap# ldapmodify -Y EXTERNAL -H ldapi:/// -f load_bdb.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry "cn=module{0},cn=config"
    

    检查后端

    root@hare:~/ldap# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b 'cn=config' "(objectClass=olcBackendConfig)"
    dn: olcBackend={0}hdb,cn=config
    objectClass: olcBackendConfig
    olcBackend: {0}hdb
    
    dn: olcBackend={1}mdb,cn=config
    objectClass: olcBackendConfig
    olcBackend: {1}mdb
    

    如果没有bdb后端

    # file backend_bdb.ldif
    dn: olcBackend=bdb,cn=config
    changetype: add
    objectClass: olcBackendConfig
    olcBackend: bdb
    
    root@hare:~/ldap# ldapmodify -Y EXTERNAL -H ldapi:/// -f backend_bdb.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry "olcBackend=bdb,cn=config"
    

    生成密码(此处passwd为123456)

    root@hare:~/ldap# slappasswd -h {SSHA}
    New password:
    Re-enter new password:
    {SSHA}e8xGdXmL+mSD3u/389YHeM+dpqFCUSyq
    

    在cn = config

    中配置数据库
    # file domain2_conf.ldif
    dn: olcDatabase=bdb,cn=config
    changetype: add
    objectClass: olcDatabaseConfig
    objectClass: olcBdbConfig
    olcDbDirectory: /var/lib/ldap-bdb/
    olcDatabase: bdb
    olcDbIndex: objectClass eq
    olcLastMod: TRUE
    olcMonitoring: TRUE
    olcDBNoSync: TRUE
    olcSuffix: dc=domain2,dc=com
    olcAccess: to dn.base="" by * read
    olcAccess: to * by dn="cn=admin,dc=domain2,dc=com" write by * read
    olcRootDN: cn=admin,dc=domain2,dc=com
    olcRootPW: {SSHA}e8xGdXmL+mSD3u/389YHeM+dpqFCUSyq
    
    root@hare:~/ldap# ldapmodify -Y EXTERNAL -H ldapi:/// -f domain2_conf.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry "olcDatabase=bdb,cn=config"
    

    添加数据库DIT

    # file domain2_db.ldif
    dn: dc=domain2,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    dc: domain2
    o: Example Corporation
    description: The Example Corporation
    
    dn: cn=admin,dc=domain2,dc=com
    objectClass: simpleSecurityObject
    objectClass: organizationalRole
    cn: admin
    userPassword: {SSHA}e8xGdXmL+mSD3u/389YHeM+dpqFCUSyq
    description: Directory Manager
    
    root@hare:~/ldap# ldapadd -x -D "cn=admin,dc=domain2,dc=com" -w 123456 -f domain2_db.ldif
    adding new entry "dc=domain2,dc=com"
    
    adding new entry "cn=admin,dc=domain2,dc=com"
    

    现在,您可以访问新的DIT(我使用LDAP管理员)

    picture 1 picture 2