为什么此ldapadd命令以“无效语法”错误退出?


14

我是openldap的新手,但精通Linux / unix环境。我正在尝试使用此处的指南设置我的第一个测试openldap环境。我也已经在这里阅读了大多数管理指南,我不得不承认,要学习的内容很多。

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

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

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

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

dn: uid=john,ou=People,dc=example,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=example,dc=com -W -f add_content.ldif

我收到以下错误:

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

adding new entry "uid=john,ou=People,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

Google针对此错误的结果无法提供任何有用的建议。我在这里可能做错了什么?


如果您的域中没有破折号怎么办?那可能是造成它的原因
Nathan C

@NathanC现在要尝试更改它……
hax0r_n_code 2013年

@NathanC同样的事情...我猜是找不到了posixGroup。如何查询可用的objectClassES?
hax0r_n_code 2013年

@NathanC我也没有此/etc/ldap/slapd.d/目录。我从源代码安装了openldap。
hax0r_n_code 2013年

我对openldap不够熟悉,无法回答...这里可能还有其他人。
内森·C

Answers:


11

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

使用 slapd.conf

您将需要include在模式定义中slapd.conf添加以下内容:

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

假设nis.schema文件位于该路径下。如果不是,请适当修改路径。

您将需要重新启动slapd以激活新模式。

使用 slapd.d

(出于完整性考虑,我将其包括在内,尽管它与您当前的配置没有直接关系)。

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

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

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

在这种情况下,无需重新启动。


谢谢!如果我下载并安装了最新版本的openldap为什么我不能配置为使用slapd.d
hax0r_n_code 2013年

也许安装程序默认使用旧配置文件?无论如何,文档中都有从转换slapd.conf为的说明slapd.d
larsk's

这个答案是非常有用的时间。我必须添加一些必需的架构才能使其对我有用。感谢您的回答!
Senthil Kumar

1
您怎么知道缺少的是nis.schema而不是其他一些架构?您如何解析错误?
Mike Shultz 2015年

1
该错误正在抱怨cn = engineers的对象类,即“ posixGroup”。由此可以很容易地弄清楚在哪个模式中定义了对象类。
larsks 2015年


1

我修复了它删除file.ldif要在openldap中收费的问题(例如:),data.ldif因为文本编辑器vi有时会由于错误或错误而插入不可见的字符,这会影响您的ldif文件。因此,将其删除,然后创建另一个,然后尝试逐个上载每个语句,并使用命令ldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”再见,我希望能对此提供帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.