我在 adam.ldif 中有以下内容
dn: uid=adam,ou=users,dc=wesgibbs,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: adam
uid: adam
uidNumber: 16859
gidNumber: 100
homeDirectory: /home/adam
loginShell: /bin/bash
gecos: adam
userPassword: {crypt}x
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
然后我尝试使用以下命令将上述 adam 用户添加到我的 LDAP 服务器
ldapadd -x -D "cn=Manager,dc=wesgibbs,dc=com" -W -f adam.ldif
我收到以下反馈:
Enter LDAP Password:
adding new entry "uid=adam,ou=users,dc=wesgibbs,dc=com"
ldap_add: Invalid syntax (21)
additional info: objectClass: value #1 invalid per syntax
我目前的理解是 .ldif 文件中的 objectClass 条目从索引 0 开始。因此反馈中提到的错误索引 1 是部分objectClass: account
。我的另一种理解,也是我怀疑的问题,是我没有在 slapd.conf 文件中包含正确的模块。我是 OpenLDAP 的新手,正在尝试掌握基础知识。任何帮助都非常感谢。
答案1
你可以在这里找到答案:为什么这个 ldapadd 命令会因“无效语法”错误而退出?
例如,通过使用slapd.conf
,您将需要include
模式定义(我使用来自 FreeBSD 13.2-RELEASE、openldap26 的路径):
# For objectClass account
include /usr/local/etc/openldap/schema/cosine.schema
# For objectClass posixAccount
include /usr/local/etc/openldap/schema/nis.schema
要激活新的模式,slapd
之后需要重新启动。