我将要设置一个 LDAP 目录。它用作将用户权限从 Web 应用程序传达给 WebDav 文件系统访问的工具,例如,将用户添加到 Web 平台应允许使用相同的凭据登录文件系统。没有其他用途。按照这个鼓励使用 、 等属性的德语教程,我配置了以下后缀和根:c
o
ou
dc
suffix "ou=webtool,o=myOrg,c=de"
rootdn "cn=ldapadmin,ou=webtool,o=myOrg,c=de"
服务器启动,我可以通过LDAP Admin连接到它,它报告“LDAP 错误:缺少对象”。那么,还没有任何对象。
我现在想从 shell 创建 root 和 admin 元素。我创建了一个init.ldif
文件:
dn: ou=webtool,o=myOrg,c=de
objectclass: dcObject
objectclass: organization
dc: webtool
o: webtool
dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin
尝试加载文件遇到错误,告诉我这ou
是不允许的:
server:~ # ldapadd -x -D "cn=ldapadmin,ou=webtool,o=myOrg,c=de" -W -f init.ldif
Enter LDAP Password:
adding new entry "ou=webtool,o=myOrg,c=de"
ldap_add: Object class violation (65)
additional info: attribute 'ou' not allowed
除了后缀,我没有ou
在任何地方使用,所以问题是:这里不允许吗?这里允许什么?
元素的创建有很多依赖关系,如果您不了解这个概念,错误消息会相当混乱。这
objectclass
不一定dcObject
是数据库的根节点,因为您在阅读多个教程时可能会猜到。相反,它必须对应于对象的类型:在这里,对于以 开头的名称ou=
,它必须是organizationalUnit
。我在这些表格中找到了这条信息。此外,对象类指示哪些属性必须并且可以添加到记录中。在这里,organizationalUnit
必须有一个ou:
条目,不能没有dc:
noro:
条目。因此,健康init.ldif
文件看起来像这样:注意:该页面还指出:“虽然许多 objectClasses 没有显示 MUST 属性,但您必须(哎哟)遵循任何层次结构 [...] 以确定是否确实如此。” 我认为这意味着我的根记录必须分别为
c=
ando=
(c:
和o:
) 提供 must 字段,但事实并非如此。