如何在 openldap 中修改架构

如何在 openldap 中修改架构

因此,我在 Debian 9 机器上全新安装了 openldap,目前看起来像

这

它将是一个电话号码数据库,为了简单起见,我将使用这个例子:数据库将分为城市 - 街道 - 以及居住在这些街道上的人们。

它应该看起来像这样:dc=city -> ou=street -> cn=nameofperson

到目前为止一切顺利,我尝试创建第一个 dc,例如纽约,如下所示:

root@ldap-test:/etc/ldap/ldif-import# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/ldif-import/createcn.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=NewYork"
ldap_add: Server is unwilling to perform (53)
        additional info: no global superior knowledge

ldif 文件如下所示:

dn: cn=NewYork
dc: NewYork
distinguishedName: dc=NewYork
name: NewYork
objectClass: top
objectClass: dcObject

由于这不起作用,我想到了另一种方法,将街道放入 nodomain,只是为了检查它是否能以这种方式工作,但似乎架构缺少 distinguishedName 和 name。我查看了默认架构,core.ldif 有这些条目,但它们被注释掉了。

所以我无法加载这个 ldif:

dn: ou=broadway,dc=nodomain
distinguishedName: ou=broadway,dc=nodomain
name: broadway
objectClass: top
objectClass: organizationalUnit
ou: broadway

root@ldap-test:/etc/ldap/ldif-import# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/ldif-import/broadway.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "ou=broadway,dc=nodomain"
ldap_add: Object class violation (65)
        additional info: attribute 'distinguishedName' not allowed

因此将 distinguishedName 加载到模式中,但它显示添加新条目

"cn=core,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
        additional info: olcAttributeTypes: Duplicate attributeType: "2.5.4.49"

我不明白为什么,因为它甚至没有加载/etc/ldap/slapd.d/cn=config/cn=schema/cn={*}*.ldif

有人知道该怎么办吗?

答案1

  • name不是一个普遍使用的属性,但cncommonName)是。
  • 不要尝试添加distinguishedNamedn已经处理了这个问题。dndistinguishedName是同一属性的别名,但只dn应用于ldapmodify操作。 这包括ldapadd

您的第一个 ldif 失败,因为:

  1. 您的 ldap 服务器未配置为处理 namingContext。2cn=NewYork您正在尝试添加 distinguishedName 属性。
  2. objectClass: dcObject没有属性name

您的第二个 ldif 失败是因为:

  1. 您正在尝试添加一个 distinguishedName 属性。
  2. objectClass: organizationalUnit没有属性name

附注:ldap 属性(包括 rdn 中使用的部分)中可以有空格。请根据需要使用引号。

相关内容