OpenLDAP:是否可以创建后缀为空的 LDAP DB?

OpenLDAP:是否可以创建后缀为空的 LDAP DB?

是否可以创建后缀为空的 OpenLDAP 数据库?如果可以,该怎么做?

我能够创建olcDatabaseConfig下面的内容cn=config,但是当我尝试将我的第一个条目添加到数据库时,出现错误“没有对父级的写访问权限”。

我的 LDAP 配置如下

root@h12345678:~ # ldapsearch -H ldapi:// -Q -Y EXTERNAL -LLL -b "cn=config" "(objectClass=olcDatabaseConfig)"

dn: olcDatabase={-1}frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: {-1}frontend
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth manage by * break
olcAccess: {1}to dn.exact="" by * read
olcAccess: {2}to dn.base="cn=Subschema" by * read
olcSizeLimit: 500
olcPasswordHash: {ARGON2}

dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth manage by * break
olcRootDN: cn=admin,cn=config

dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix:
olcAccess: {0}to * by * write

我的测试 LDIF 是

root@h12345678:~ # cat ./test.ldif
dn: dc=net
objectClass: domain
dc: net

ldapadd产量

root@h2917298:~ # ldapadd -Q -Y EXTERNAL -H ldapi:/// -f ./test.ldif 
adding new entry "dc=net"
ldap_add: Insufficient access (50)
        additional info: no write access to parent

问题:我做错了什么?还是说这根本就不支持?

背景(如果你想知道我为什么要这样做)

我需要管理三个 DIT,它们在最顶层的 RDN 上已经有所不同,基本上是这样的

  • dc=第一个域,dc=net
  • dc=第二域名,dc=com
  • dc=第三域,dc=de

以前,这些 DIT 存储在三个不同的数据库中,每个数据库都有一个 DN 作为其数据库后缀。但这种方法要求我还必须始终指定其中一个后缀作为的搜索基础ldapsearch。不可能同时在所有三个 DIT 上运行单个搜索。我最近才知道,即使搜索基础不能为空,空的搜索基础''也是有效的,即ldapsearch -b '' '(uid=foo)'是有效的 LDAP 搜索。但这似乎只有在还有一个为“空”基础提供服务的数据库时才有效。

本质上,我希望所有三个 DIT 都放在一个数据库中,并且能够同时对所有三个 DIT 运行单个搜索,例如 UID 搜索。

相关内容