我创建了一个自定义 LDAP 对象类,但在将其添加到 OpenLDAP 服务器之前忘记了几个属性。我按照此 Ubuntu 文档页面上的说明进行操作:https://help.ubuntu.com/12.04/serverguide/openldap-server.html我正在运行 Ubuntu 12.04。
那么,如何向已应用于服务器的 objectClass 添加新的 MAY 属性?
特别是关于 OpenLDAP,但如果知道如何关于 Novell eDirectory 也很好。
答案1
简短的回答
使用 ldapmodify 的方式与对具有多值属性的常规 ldap 条目的操作完全相同。
这几乎是我所期望的,但我不是 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
我遇到的问题部分是 ldif 修改语法,以及如何处理 {N} 索引。
因此,你的 ldif 文件的开头应该是这样的:
version: 1
dn: cn={N}test,cn=schema,cn=config
changetype: modify
修改 objectClass:
delete: olcObjectClasses
olcObjectClasses: <old value>
-
add: olcObjectClasses
olcObjectClasses: <new value>
要修改属性:
delete: olcAttributeTypes
olcAttributeTypes: <old value>
-
add: olcAttributeTypes
olcAttributeTypes: <new value>
我总结的一些关于语法的技巧:
- 忽略 ldif 文件中的 {N} 索引。它们会自动修复。
- 您确实需要架构 DN 中的 {N}。
- 记住'-' 语句之间。
- 不要在 ' 后添加新行-'. ldapmodify 在该新行停止,因此其后的任何内容都不会被执行。
- 在修改 objectClass 以包含新属性之前,请先添加它们。
- 删除所有制表符。它们会导致系统产生乱码。