我即将设置一个 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 管理员,报告“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
在任何地方使用,所以问题是:这里不允许吗?什么是允许来这里吗?
答案1
创建元素有许多依赖项,如果您不了解这个概念,错误消息会相当令人困惑。 不一定objectclass
是dcObject
数据库的根节点,因为当您阅读几个教程时可能会猜到。相反,它必须对应于对象的类型:在这里,对于以 开头的名称ou=
,它必须是organizationalUnit
。我在 中找到了这条信息这些桌子。此外,对象类规定了哪些属性必须和可以添加到记录中。这里,organizationalUnit
必须有一个ou:
条目,并且不能没有dc:
或没有o:
条目。因此,健康init.ldif
文件如下所示:
dn: ou=webtool,o=myOrg,c=de
objectclass: organizationalUnit
ou: LDAP server for my webtool
dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin
注意:该页面还指出:“虽然许多 objectClasses 没有显示必须属性,但您必须(哦)遵循任何层次结构 [...] 来确定是否确实如此。”我以为这意味着我的根记录必须为和c=
(o=
分别为c:
和o:
)提供必须字段,但这是不是案子。