具体来说,我需要添加ORDERING caseIgnoreOrderingMatch
和属性。我曾希望有某种方法可以做到这一点,但以下方法对我不起作用(也许核心模式是只读的,但它给了我一个语法错误):givenName
surname
ldapmodify
$ ldapmodify -QY EXTERNAL -H ldapi:/// <<EOF
dn: cn=Subschema
changetype: modify
delete: attributetypes
attributetypes: ( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: first name
(s) for which the entity is known by' SUP name )
-
add: attributetypes
attributetypes: ( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: first name
(s) for which the entity is known by' SUP name ORDERING caseIgnoreOrderingMatch )
-
delete: attributetypes
attributetypes: ( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (family)
name(s) for which the entity is known by' SUP name )
-
add: attributetypes
attributetypes: ( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (family)
name(s) for which the entity is known by' SUP name ORDERING caseIgnoreOrderingMatch )
EOF
modifying entry "cn=Subschema"
ldap_modify: Invalid syntax (21)
additional info: attributetypes: value #0 invalid per syntax
$
我已经看到了一些我不想直接编辑模式文件的建议/etc/openldap/schema/core.ldif
,但是(停止 slapd、编辑、重新启动 slapd)似乎没有效果。
关于如何做到这一点的任何指示?我的 LDAP 知识充其量是微不足道的,因此感谢您的帮助!谢谢。
弄清楚了; 我使用的示例面向具有稍微不同配置的不同发行版——我使用的是 Scientific Linux 6.5。再加上我的无知,难怪它不起作用。这是有效的:
而对于直接文件编辑,文件路径是
/etc/openldap/slapd.d/cn=config/cn=schema/cn={1}core.ldif
但使用ldapmodify
是一种更好的方法。老实说,您不应该乱用标准对象类。您回答自己问题的方式确实有效;但是,最好使用新的结构对象类(可能从另一个对象类继承)来定义您自己的本地模式,或者定义一个辅助对象类并将其添加到您的节点中。
我已经在这里回答了一个类似的问题:Openldap questions with added attribute
您可以在那里找到一些更清洁的方法来解决您的问题。