ldapadd 在默认配置上给出 "no global superior knowledge"
ldapadd gives "no global superior knowledge" on default config
背景:
我正在 DigitalOcean droplet 上安装 Prosody XMPP server and Kaiwa 网络客户端。
Kaiwa 有一个使用 Docker 的一键部署到 DO-droplet 工具,我首先尝试了它,但它没有用 - 可能是因为我使用的是最小 512MB DO VPS 并且 运行 内存不足,Docker 图像已启动一半。
我清除了所有这些图像,为我的 droplet 创建了一个 1GB 的交换文件,现在(按照建议)按照 Kaiwa GitHub README 进行 "manual" 安装 - 这实际上是拉动和配置四个 Docker 图片:postgresql
、slapd
、kaiwa-server
和 kaiwa
。设置 PostgreSQL 映像很顺利,我 运行 在 LDAP 方面遇到了麻烦。
问题:
以下是配置 LDAP Docker 图片的说明:
$ docker pull nickstenning/slapd
$ docker run -d \
--name ldap \
-p 389:389 \
-e LDAP_DOMAIN=myorga \
-e LDAP_ORGANISATION=MyOrganisation \
-e LDAP_ROOTPASS=mypassword \
nickstenning/slapd
$ wget https://raw.githubusercontent.com/digicoop/kaiwa-server/master/users.ldif
$ ldapadd -h localhost -x -D cn=admin,dc=myorga -w mypassword -f users.ldif
(我省略了一些 sed
命令,用于将 users.ldif
中的示例数据替换为个人数据;我在两个数据集上都遇到了同样的错误。)
在 运行 ldapadd
命令之后,我得到这个:
adding new entry "ou=users,dc=example.com"
ldap_add: Server is unwilling to perform (53)
additional info: no global superior knowledge
实验表明,如果我使用用户 user1
和密码 user1pass
调用 ldapadd
,或者如果我使用用户 admin
调用它但使用了错误的管理员密码,我得到一个不同的错误:
ldap_bind: Invalid credentials (49)
我假设这意味着第二个 docker run
命令有效并且我的 LDAP 服务器识别出传递给 ldapadd
的管理员用户和密码是正确的,但出于某种原因我要问它将用户附加到树中不存在的位置。
我以前从未使用过 LDAP,我可能犯了一些愚蠢的错误。我已经阅读了这个 SO 问题 (openldap "no global superior knowledge"),我的问题可能与此类似 - 但我不希望在使用开发人员的默认配置文件时存在拼写错误,而且我还没有找到一个我自己呢。
您似乎将 LDAP DIT 的根目录命名为 dc=myorga
。因此,需要 ou=users,DC=example.com
的条目将不起作用。您必须相应地更改它。
对我来说,这是由属性值后的空格引起的。
背景:
我正在 DigitalOcean droplet 上安装 Prosody XMPP server and Kaiwa 网络客户端。
Kaiwa 有一个使用 Docker 的一键部署到 DO-droplet 工具,我首先尝试了它,但它没有用 - 可能是因为我使用的是最小 512MB DO VPS 并且 运行 内存不足,Docker 图像已启动一半。
我清除了所有这些图像,为我的 droplet 创建了一个 1GB 的交换文件,现在(按照建议)按照 Kaiwa GitHub README 进行 "manual" 安装 - 这实际上是拉动和配置四个 Docker 图片:postgresql
、slapd
、kaiwa-server
和 kaiwa
。设置 PostgreSQL 映像很顺利,我 运行 在 LDAP 方面遇到了麻烦。
问题:
以下是配置 LDAP Docker 图片的说明:
$ docker pull nickstenning/slapd
$ docker run -d \
--name ldap \
-p 389:389 \
-e LDAP_DOMAIN=myorga \
-e LDAP_ORGANISATION=MyOrganisation \
-e LDAP_ROOTPASS=mypassword \
nickstenning/slapd
$ wget https://raw.githubusercontent.com/digicoop/kaiwa-server/master/users.ldif
$ ldapadd -h localhost -x -D cn=admin,dc=myorga -w mypassword -f users.ldif
(我省略了一些 sed
命令,用于将 users.ldif
中的示例数据替换为个人数据;我在两个数据集上都遇到了同样的错误。)
在 运行 ldapadd
命令之后,我得到这个:
adding new entry "ou=users,dc=example.com"
ldap_add: Server is unwilling to perform (53)
additional info: no global superior knowledge
实验表明,如果我使用用户 user1
和密码 user1pass
调用 ldapadd
,或者如果我使用用户 admin
调用它但使用了错误的管理员密码,我得到一个不同的错误:
ldap_bind: Invalid credentials (49)
我假设这意味着第二个 docker run
命令有效并且我的 LDAP 服务器识别出传递给 ldapadd
的管理员用户和密码是正确的,但出于某种原因我要问它将用户附加到树中不存在的位置。
我以前从未使用过 LDAP,我可能犯了一些愚蠢的错误。我已经阅读了这个 SO 问题 (openldap "no global superior knowledge"),我的问题可能与此类似 - 但我不希望在使用开发人员的默认配置文件时存在拼写错误,而且我还没有找到一个我自己呢。
您似乎将 LDAP DIT 的根目录命名为 dc=myorga
。因此,需要 ou=users,DC=example.com
的条目将不起作用。您必须相应地更改它。
对我来说,这是由属性值后的空格引起的。