在 Fedora 12 上安裝 OpenLDAP:ldap_bind:無效憑據 (49)
我一直在嘗試在 Fedora 12 上設置預設安裝的 OpenLDAP,但非常不成功。我的最終目標是使用 LDAP 身份驗證進行使用者登錄和 Apache,使用在同一台機器上執行的 OpenLDAP 伺服器。
伺服器正在執行,但是當我嘗試使用 ldapsearch 或 ldapadd 時總是得到的錯誤是:ldap_bind: Invalid credentials (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 會產生配置文件測試成功。
我在某處讀到該命令
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
。這將強制 OpenLDAPslapd.conf
在啟動服務時查找我的文件。
我在 Fedora 12 中也有這個 openldap 問題!但是,如果你嘗試使用以下命令手動啟動你的 openldap,它的行為就會恢復正常。/usr/sbin/slapd -f /etc/openldap/slapd.conf
我懷疑預設命令(我指的是“service slapd start”)沒有載入我在 yum 安裝後手動創建的 openldap 配置文件(我指的是 /etc/openldap/slapd.conf)。