我一直试图设置 Fedora 12 上默认安装的 OpenLDAP,但一直没有成功。我的最终目标是使用 LDAP 身份验证进行用户登录和 Apache,使用在同一台机器上运行的 OpenLDAP 服务器。
服务器正在运行,但是当我尝试使用 ldapsearch 或 ldapadd 时总是出现以下错误:ldap_bind:无效凭证(49)
我一直在关注这些教程,但它们都没有帮助我:
- http://www.howtoforge.com/openldap_fedora7
- http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-ldap-quickstart.html
- http://www.howtoforge.com/linux_ldap_authentication
- http://docs.fedoraproject.org/deployment-guide/f12/en-US/html/s1-ldap-pam.html
- http://www.openldap.org/doc/admin24/quickstart.html
首先,一些组件已经安装,我使用 yum 安装了这些:
yum install openldap-servers openldap-devel
然后,我在 /etc/openldap 中创建了一个基本的 slapd.conf 文件:
database bdb
suffix "dc=sniejana-sandbox,dc=com"
rootdn "cn=root,dc=sniejana-sandbox,dc=com"
rootpw {SSHA}cxdz55ygPu4T3ykg7dgu+L0VRvsFSeom
directory /var/lib/ldap/sniejana-sandbox.com
我使用以下命令获取了 rootpw:
slappasswd -s changeme
我还创建了/var/lib/ldap/sniejana-sandbox.com
目录并确保其所有内容/var/lib/ldap
都归 ldap 用户所有。
我找到了两个 ldap.conf 文件,一个在 /etc 中,一个在 /etc/openldap 中。我不知道哪个是正确的。如果我理解正确的话,这个文件是用来配置客户端的。我把这个放在了两个文件中:
HOST localhost
BASE dc=sniejana-sandbox,dc=com
然后我使用以下命令运行服务器:
service slapd start
它说“好的”。
上面的大多数教程都说要使用该命令ldapsearch -D "cn=Manager,dc=my-domain,dc=com" -W
来确保一切正常。当我执行此命令时,会出现密码提示,输入密码后,出现错误。
ldapsearch -D "cn=root,dc=sniejana-sandbox,dc=com" -W
Enter LDAP password:
ldap_bind: Invalid credentials (49)
尝试使用 ldapadd 时也会发生同样的事情。我尝试在 slapd.conf 中使用加密和未加密的密码,但没有任何变化。添加 -x 进行简单身份验证也不会改变任何东西。
netstat -ap 确认服务器正在监听:
tcp 0 0 *:ldap *:* LISTEN 4148/slapd
tcp 0 0 *:ldap *:* LISTEN 4148/slapd
ps -ef|grep slapd 确认进程正在运行:
ldap 4148 1 0 15:22 ? 00:00:00 /usr/sbin/slapd -h ldap:/// -u ldap
运行 slaptest procudes配置文件测试成功。
我读到过一些文章说该命令ldapsearch -x -b '' -s base '(objectclass=*)' namingContext
可以确认服务器正在运行。它似乎有效:
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContext
#
#
dn:
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
我没什么主意了。我是否忽略了某些显而易见的东西?
答案1
啊哈!我的问题解决了!我只需要使用 删除目录。这将强制 OpenLDAP在启动服务时rm -rf /etc/openldap/slapd.d
查找我的文件。slapd.conf
答案2
我在 Fedora 12 中也遇到了这个 openldap 问题!但如果您尝试使用以下命令手动启动 openldap,它的行为就会恢复正常。/usr/sbin/slapd -f /etc/openldap/slapd.conf
我怀疑默认命令(我指的是“service slapd start”)没有加载我在 yum 安装后手动创建的 openldap 配置文件(我指的是 /etc/openldap/slapd.conf)。
答案3
我第一次尝试时也遇到了同样的问题。
经过分析,我删除了/etc/openldap/slapd.d/
目录,并删除了目录的内容/var/lib/ldap/
(其中包含数据库)。之后一切正常。
注意:var/lib/ldap
目录必须存在,否则slapd
服务将永远不会启动。
我通过阅读/etc/init.d/slapd
脚本理解了这一点。在该脚本中,他们盲目地检查/etc/openldap/slapd.d
目录是否存在。如果是,则意味着他们只是忽略了该slapd.conf
文件。该脚本还检查/var/lib/ldap/
目录中是否存在数据库。如果是,则意味着他们使用该数据库,否则他们将创建一个新的空数据库。
/etc/openldap/slapd.d
目录就是将配置信息保存在一个目录数据结构中,用来代替slapd.conf
文件。我猜 Fedora 默认使用这个目录。