如何更改 OpenLDAP 核心属性

如何更改 OpenLDAP 核心属性

具体来说,我需要添加ORDERING caseIgnoreOrderingMatchgivenNamesurname属性。我曾希望有某种方法可以使用来做到这一点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
$

我见过一些建议直接编辑架构文件我不想这样做,但这样做(停止 slapd、编辑/etc/openldap/schema/core.ldif、重新启动 slapd)似乎没有效果。

有没有关于如何做到这一点的指示?我对 LDAP 的了解最多也只是浅薄,所以任何帮助我都感激不尽!谢谢。

答案1

搞清楚了;我使用的示例针对的是不同的发行版,配置略有不同——我使用的是 Scientific Linux 6.5。再加上我的无知,难怪它不起作用。以下是有效的方法:

ldapmodify -QY EXTERNAL -H ldapi:/// <<EOF
dn: cn={1}core,cn=schema,cn=config
changetype: modify
delete: olcAttributeTypes
olcAttributeTypes: {1}( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (f
 amily) name(s) for which the entity is known by' SUP name )
-
add: olcAttributeTypes
olcAttributeTypes: {1}( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (f
 amily) name(s) for which the entity is known by' SUP name ORDERING caseIgnore
 OrderingMatch )
-
delete: olcAttributeTypes
olcAttributeTypes: {35}( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: fir
 st name(s) for which the entity is known by' SUP name )
-
add: olcAttributeTypes
olcAttributeTypes: {35}( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: fir
 st name(s) for which the entity is known by' SUP name ORDERING caseIgnoreOrde
 ringMatch )
EOF

对于直接文件编辑,文件路径/etc/openldap/slapd.d/cn=config/cn=schema/cn={1}core.ldif但是使用ldapmodify是一种更好的方法。

答案2

老实说,你不应该乱搞标准对象类。你回答自己问题的方式工作;然而,方式最好使用新的结构对象类(可能从另一个继承)来定义您自己的本地模式,或者定义辅助对象类并将其添加到您的节点。

我已经在这里回答了类似的问题:Openldap 添加属性问题

您可以在那里找到一些更清晰的方法来解决问题。

相关内容