我目前正在为Openldap版本2.4.14实现一个pwdCheckModule库(版本无法更改)。在此期间,我想从LDAP数据库中读取一些属性。其中一个属性称为pcpMinNumberLowerUpper,它包含最小数量的低位和/或高位字符。该属性应该是位于cn:schema下的现有objectClass的一部分,名为pwdPolicy,该模式已经有一些其他属性,如pwdMaxAge等。
我想使用ldapmodify terminal命令将属性添加到现有的LDAP数据库中。我刚刚使用的命令如下所示:
ldapmodify -h localhost -p 389 -D "cn=Administrator,dc=<mydc>,dc=<mydc>..." -w "<mysecret>" -x -f pcp_attribute_upgrade.ldif
相应的ldif文件具有以下内容:
dn: cn=schema
changetype: modify
add: attributetypes
attributetypes: ( 1.3.6.1.4.1.42.2.27.8.1.18 NAME 'pcpMinNumberLowerUpper' DESC 'Minimum of upper or lower characters' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUED USAGE userApplications )
现在,如果我执行上面的命令,它会向终端输出发出以下错误消息:
ldap_start_tls: Protocol error (2)
additional info: unsupported extended operation
modifying entry "cn=schema"
ldap_modify: Invalid syntax (21)
additional info: attributetypes: value #0 invalid per syntax
我已经尝试使用olcAttributeTypes而不是attributeTypes,但它没有帮助。任何帮助都会很好: - )
提前致谢, FLO
答案 0 :(得分:1)
单值属性的关键字是SINGLE-VALUE,在尝试将架构定义添加到OpenDJ LDAP目录服务器时报告:
提供的值&#34;(1.3.6.1.4.1.42.2.27.8.1.18 NAME &#39; pcpMinNumberLowerUpper&#39; DESC&#39;最低字符或最低字符&#39; 语法1.3.6.1.4.1.1466.115.121.1.27单值使用 userApplications)&#34;无法解析为有效的属性类型 描述,因为它包含非法令牌&#34; SINGLE-VALUED&#34;
如下所示更改它,它将起作用。
dn: cn=schema
changetype: modify
add: attributetypes
attributetypes: ( 1.3.6.1.4.1.42.2.27.8.1.18 NAME 'pcpMinNumberLowerUpper' DESC 'Minimum of upper or lower characters' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE USAGE userApplications )
答案 1 :(得分:1)
使用默认的OpenLdap配置,对于架构修改,通常您必须使用本地ldap服务器root帐户的外部身份验证:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f pcp.ldif
和pcp.ldif应该是:
dn: cn=schema,cn=config
changetype: modify
add: olcAttributetypes
olcAttributetypes: ( 1.3.6.1.4.1.42.2.27.8.1.18 NAME 'pcpMinNumberLowerUpper' DESC 'Minimum of upper or lower characters' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE USAGE userApplications )
(已更改dn,&#34;属性类型&#34;已更换为&#34; olcAttributetypes&#34;和&#34; SINGLE-VALUED&#34;更改为&#34;单值&#34;)