我有一个 OpenLDAP 服务器,其配置文件中内容如下:
suffix "o=a.b.priv"
rootdn "cn=Manager,o=a.b.priv"
我正在建立一个新项目,它将使用以下内容:
suffix "o=c.b.priv"
rootdn "cn=Manager,o=c.b.priv"
这两者可以在同一个 OpenLDAP 服务器实例上共存吗?
我猜这是不可能的,我的选择是
- 设置第二个实例,监听同一台机器上的另一个端口
- “重构”现有数据(这可能吗?我是 LDAP 新手),以便 root 是
b.priv
,rootdn 是cn=Manager,o=b.priv
及其子级o=a.b.priv
和o=c.b.priv
还有其他选择吗?
答案1
多个 DIT 似乎确实是可行的。 看看这个文档和示例。至于这样做是否谨慎,我无法回答您的要求。在继续之前完全理解文档似乎是明智的。也许 OpenLDAP 特定小组可以帮助您评估您的想法。但请注意,如果您没有做好功课,他们可能会很暴躁。
格雷格
答案2
您可以使用 OpenLDAP 创建多个单独的数据库。您可以在文档。
我认为,在非标准端口上设置第二个实例不是一个好主意,因为无论在何处使用该实例,您都必须小心指定正确的端口。
答案3
我对 LDAP 也还很陌生,但我能够做到这一点,所以我报告了我所做的操作,希望它们有用。
我在邮件列表回复。
我需要工作根用户。
首先使用命令
slapcat -n0
显示 LDAP 配置。
你应该看到类似这样的内容:
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: <your old root DN>
...
转到/var/lib/ldap
并为新树创建一个子文件夹。确保此文件夹具有755
权限和适当的所有者和组(在我的情况下必须是openldap openldap
)。
按如下方式创建 LDIF 文件:
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap/<NEWDIR>
olcSuffix: <new root DN>
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
s auth by dn="cn=Manager,<new root DN>" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=<new root DN>" write by * read
olcLastMod: TRUE
olcRootDN: cn=Manager,<new root DN>
olcRootPW: <manager password>
然后打电话
ldapadd -Y EXTERNAL -H ldapi:/// -f <your-ldif-file>
并且您应该添加一个新的根。