linux – 为什么这个ldapadd命令退出时出现“语法无效”错误?

前端之家收集整理的这篇文章主要介绍了linux – 为什么这个ldapadd命令退出时出现“语法无效”错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是openldap的新手,但非常精通 linux / unix环境.我正在尝试使用指南 here设置我的第一个测试openldap环境.我还阅读了大部分管理指南 here,我不得不承认,这需要很多.

因此,按照ubuntu基本设置指南,我创建了一个如下所示的ldif文件

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=engineers,ou=Groups,dc=com
objectClass: posixGroup
cn: engineers
gidNumber: 5000

dn: uid=john,ou=People,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john

每当我尝试使用以下方法添加它时:

$ldapadd -x -D cn=admin,dc=com -W -f add_content.ldif

我收到以下错误

adding new entry "cn=engineers,dc=my-domain,dc=com"
ldap_add: Invalid Syntax (21)
    additional info: objectClass: value #0 invalid per Syntax

adding new entry "uid=john,dc=com"
ldap_add: Invalid Syntax (21)
    additional info: objectClass: value #0 invalid per Syntax

谷歌此错误的结果并没有任何有用的建议.我在这里做错了什么?

解决方法

毫无疑问,您的问题是需要将nis架构加载到LDAP服务器中.如何执行此操作取决于您是使用旧版slapd.conf配置文件还是使用cn = config中托管并由slapd.d目录支持的较新动态配置.

使用slapd.conf

您需要在slapd.conf中包含模式定义,方法是在以下行中添加一行:

include /usr/local/etc/openldap/schema/nis.schema

这假设nis.schema文件位于该路径;如果没有,请适当修改路径.

您需要重新启动slapd才能激活新架构.

使用slapd.d

(为了完整性,我将其包括在内,尽管它与您当前的配置并不直接相关).

要在使用动态cn = config配置时将模式加载到slapd中,可以使用ldapadd.根据ACL的配置方式,命令可能如下所示:

ldapadd -Y EXTERNAL -H ldapi:// -f /usr/local/etc/openldap/schema/nis.ldif

这假设您运行的slapd具有允许对root用户进行“对等凭证”身份验证的ACL.如果这不起作用,则需要使用-D和-W提供适当的绑定DN和密码.

在这种情况下不需要重新启动.

猜你在找的Linux相关文章