在网上找不到解决方案。我尝试过这个,但它不起作用。如果有任何帮助,我将不胜感激(LDAP 确实令人头疼)。
root@9ae33b5bc07e:/# ldapadd -Y EXTERNAL -H ldapi:/// -f add_attribute.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldapadd: invalid format (line 4) entry: "cn=schema,cn=config"
root@9ae33b5bc07e:/# cat add_attribute.ldif
dn: cn=schema,cn=config
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.5427.1.389.4.2
NAME 'dateOfBirth'
DESC 'Date of birth (format YYYYMMDD, only numeric chars)'
EQUALITY numericStringMatch
SUBSTR numericStringSubstringsMatch
SINGLE-VALUE
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{8}
)
您的 LDIF 文档有两个主要问题:
ldapadd
仅创建整个条目,并且不理解“add:”或“replace:”伪属性。您需要 ldapmodify
来更改现有条目(添加/替换/删除其属性)。
(尽管如果 LDIF 具有“changetype:add”或“changetype:modify”,则会覆盖所有内容;除了隐含的默认“changetype”之外,CLI 命令实际上是相同的。)
括号对 LDIF 语法没有任何意义;它们只是字符串值的一部分。当您包装长值时,缩进很重要 - 所有连续行,包括右括号(如果有),必须缩进至少一个空格(该空格会被忽略,不会成为值,但不会忽略任何附加空格)。
它与 HTTP 标头或电子邮件标头中的续行非常相似。