在Fedora 12上安装OpenLDAP:ldap_bind:凭据无效(49)

我一直试图在Fedora 12上设置默认安装的OpenLDAP,但是非常失败。 我的最终目标是使用在同一台计算机上运行的OpenLDAP服务器使用LDAP身份validation用户login和Apache。

服务器正在运行,但是我尝试使用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中创build了一个基本的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 

我还创build了/var/lib/ldap/sniejana-sandbox.com目录,并确保/var/lib/ldap的全部内容都由ldap用户拥有。

我find了两个ldap.conf文件,一个在/ etc中,一个在/ etc / openldap中。 我不知道哪一个是正确的。 如果我理解正确,这个文件是configuration客户端。 我把这两个:

 HOST localhost BASE dc=sniejana-sandbox,dc=com 

然后我运行服务器:

 service slapd start 

它说好。

上面的大多数教程都会使用命令ldapsearch -D "cn=Manager,dc=my-domain,dc=com" -W来确保一切正常。 当我执行这个命令时,出现一个密码提示,input密码后,我得到错误。

 ldapsearch -D "cn=root,dc=sniejana-sandbox,dc=com" -W Enter LDAP password: ldap_bind: Invalid credentials (49) 

尝试使用ldapadd时会发生同样的情况。 我在slapd.conf中使用了一个encryption的和未encryption的密码,它没有改变任何东西。 为简单身份validation添加-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 configuration文件testing成功

我在某处读到命令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 

我正在用尽想法。 我错过了什么明显的?

啊哈! 我的问题解决了! 我只需要使用rm -rf /etc/openldap/slapd.d来删除目录。 这将强制OpenLDAP在启动服务时查找我的slapd.conf文件。

我在Fedora 12也有这个openldap问题! 但是,如果您尝试使用以下命令手动启动您的openldap,它的行为将转为正常。 / usr / sbin / slapd -f /etc/openldap/slapd.conf

我怀疑默认的命令(我指的是“服务slapd开始”)没有加载openldapconfiguration文件(我指的是/etc/openldap/slapd.conf),这是我安装yum后手动创build的。

当我第一次尝试时,我也面临同样的问题。

分析之后,我刚刚删除了/etc/openldap/slapd.d/目录,并删除了/var/lib/ldap/目录(包含数据库)的内容。 之后,一切正常。

注意: var/lib/ldap目录必须存在,否则slapd服务永远不会启动。

我通过阅读/etc/init.d/slapd脚本来理解这一点。 在那个脚本中,他们会盲目地检查/etc/openldap/slapd.d目录是否存在。 如果是的话,他们只是简单地忽略了slapd.conf文件。 该脚本还检查数据库是否存在于/var/lib/ldap/目录中。 如果是的话,他们使用该数据库,否则他们创build一个新的空数据库。

/etc/openldap/slapd.d目录正好包含了一个目录数据结构中的configuration信息,而不是slapd.conf文件。 我猜,Fedora默认使用这个目录。