我不明白如何在 OpenLDAP 服务器上配置用户和密码。我在这个问题中描述的内容是基于在 Centos 7 上全新安装 OpenLDAP 2.4(通过 yum)。
启动后slapd
我执行命令
[root@papp ~]# slapcat -n0 | grep olcRootDN
olcRootDN: cn=Manager,dc=my-domain,dc=com
这告诉我我们已经有一个具有 dn 的 root 用户cn=Manager,dc=my-domain,dc=com
。该用户尚未设置密码。
[root@papp ~]# slapcat -n0 | grep olcRootPW
接下来我尝试手动设置密码:
[root@papp ~]# ldappasswd -H ldap://localhost -x -D "dn=Manager,dc=my-
domain,dc=com" -W -A -S
Old password: (empty)
Re-enter old password: (empty)
New password: password
Re-enter new password: password
Enter LDAP Password: (what is that?? I use empty)
ldap_bind: Invalid DN syntax (34)
additional info: invalid DN
这给了我一个无效的 DN。这是为什么?我没有看到无效的 DN。这是否意味着我无法ldappasswd
在全新安装的 OpenLDAP 上使用该命令?
接下来我尝试上传一个架构文件
# /tmp/pass.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: password
[root@papp ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/pass.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
密码现已设置,我可以通过以下方式确认
[root@papp ~]# slapcat -n0 | grep olcRootPW
olcRootPW:: cGFzc3dvcmQ=
然而搜索仍然不起作用
ldapsearch -D "cn=Manager,dc=my-domain,dc=com" -v -x -b '' -s base '(objectClass=*)' -w password
ldap_bind: Invalid credentials (49)
我也尝试使用 apache directory studio 浏览我的 LDAP 树,但我只能使用“无身份验证”连接到 ldap。当我使用 dn = 的简单身份验证时,cn=Manager,dc=my-domain,dc=com
我收到身份验证错误(无效凭据)。
答案1
首先,不要设置明文密码,即使配置以某种方式对其进行了哈希处理。slappasswd
首先使用。其次,您不能将其ldappasswd
用于目录管理器。第三,我不确定,但有些东西告诉我其他配置有误,而您还没有说清楚您是如何更改 olcRootDN 的。
我尝试重复您所做的事情,但无法重现相同的错误或问题。
# yum install openldap-servers -y
# systemctl start slapd
# slappasswd
New password:
Re-enter new password:
{SSHA}piJmuKxgnMh7DVBOQtCgz3/httcjc4kP
# /tmp/manager.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=manager,dc=angelsofclockwork,dc=net
-
replace: olcRootPW
olcRootPW: {SSHA}piJmuKxgnMh7DVBOQtCgz3/httcjc4kP
# ldapmodify -QY EXTERNAL -H ldapi:/// -f /tmp/manager.ldif
# ldapsearch -D "cn=Manager,dc=bromosapien,dc=net" -v -x -b '' -s base '(objectClass=*)' -W -h localhost
ldap_initialize( ldap://localhost )
Enter LDAP Password:
filter: (objectClass=*)
requesting: All userApplication attributes
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectClass=*)
# requesting: ALL
#
#
dn:
objectClass: top
objectClass: OpenLDAProotDSE
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
您可能需要阅读指南来帮助您了解/理解您需要采取的步骤。http://www.angelsofclockwork.net/wiki/centos/openldap.html