如何向现有 LDAP 对象类添加新属性?

Dav*_* R. 7 openldap ldap edirectory

我创建了一个自定义 LDAP objectClass,但在将它添加到我的 OpenLDAP 服务器之前忘记了几个属性。我按照此 Ubuntu 文档页面上的说明进行操作:https : //help.ubuntu.com/12.04/serverguide/openldap-server.html我正在运行 Ubuntu 12.04。

那么,如何向已应用于服务器的 objectClass 添加新的 MAY 属性?

特别是在 OpenLDAP 上,但了解 Novell eDirectory 的方法也会很好。

Dav*_* R. 7

简短的回答

像使用具有多值属性的常规 ldap 条目一样使用 ldapmodify。

这几乎是我的预期,但我不是 100% 确定,因为您在运行 ldap 搜索模式时看到的 {N} 索引。

长答案

首先,找到您的架构的 dn。类似于 cn={4}test,cn=schema,cn=config 然后编写一个 ldif 文件并将其应用到您的目录中。在 Ubuntu 12.04 上,我以 root 身份应用它:

ldapmodify -Q -Y EXTERNAL -H ldapi://  -f test.ldif
Run Code Online (Sandbox Code Playgroud)

我遇到问题的部分是 ldif 修改语法,以及如何处理 {N} 索引。

所以,你的 ldif 文件的开头应该是这样的:

version: 1

dn: cn={N}test,cn=schema,cn=config
changetype: modify
Run Code Online (Sandbox Code Playgroud)

修改对象类:

delete: olcObjectClasses
olcObjectClasses: <old value>
-
add: olcObjectClasses
olcObjectClasses: <new value>
Run Code Online (Sandbox Code Playgroud)

要修改属性:

delete: olcAttributeTypes
olcAttributeTypes: <old value>
-
add: olcAttributeTypes
olcAttributeTypes: <new value>
Run Code Online (Sandbox Code Playgroud)

我想出了一些关于语法的提示:

  • 忽略 ldif 文件中的 {N} 索引。它们会自动修复。
  • 您确实需要架构的 DN 中的 {N}。
  • 记住语句之间的“ - ”。
  • 不要在“ - ”之后换行。ldapmodify 停在那个新行,所以它之后的任何东西都不会被执行。
  • 在修改 objectClass 以包含它们之前添加新属性。
  • 消除所有制表符。它们会导致系统产生乱码。