我一直试图在Fedora 12上设置默认安装的OpenLDAP,但是非常失败。 我的最终目标是使用在同一台计算机上运行的OpenLDAP服务器使用LDAP身份validation用户login和Apache。
服务器正在运行,但是我尝试使用ldapsearch或ldapadd时总是得到的错误是: ldap_bind:无效凭据(49)
我一直在关注这些教程,但没有一个帮助我:
首先,已经安装了一些组件,我用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默认使用这个目录。