执行ldapadd 命令时报错:ldap_bind: Invalid credentials (49)
轉(zhuǎn)載自:http://www.linuxfly.org/post/671/
某項(xiàng)目,需要在Asianux 4.0上配置LDAP服務(wù)。參考以前的[原]操作ldap 數(shù)據(jù)庫一文,在執(zhí)行l(wèi)dapadd 命令時(shí)報(bào)錯(cuò):
引用
ldap_bind: Invalid credentials (49)
經(jīng)分析及查詢相關(guān)資料,原來該版本的OpenLDAP已改用其他格式保存配置數(shù)據(jù),原來的slapd.conf 僅作為模板使用。
一、軟件版本
先來看看具體的版本信息:
引用
# cat /etc/asianux-release
Asianux Server 4 (Hiranya)
# rpm -qa|grep openldap
openldap-2.4.19-15.AXS4.x86_64
openldap-servers-2.4.19-15.AXS4.x86_64
openldap-devel-2.4.19-15.AXS4.x86_64
openldap-clients-2.4.19-15.AXS4.x86_64
compat-openldap-2.4.19_2.3.43-15.AXS4.x86_64
二、配置LDAP
1.修改配置文件
這里假設(shè)系統(tǒng)是新安裝好的,沒有遺留數(shù)據(jù)。若非如此,請(qǐng)參考附錄。
在/etc/openldap目錄下,有一個(gè)slapd.conf.bak文件,拷貝一份為slapd.conf。
# cd /etc/openldap
# cp slapd.conf.bak slapd.conf
(為什么這里會(huì)沒有slapd.conf,第一次配置時(shí)已覺得有點(diǎn)問題,后來才知道,因?yàn)樵撐募F(xiàn)僅作為模板使用,服務(wù)真正讀取的配置數(shù)據(jù)不在這里)
然后,使用slappasswd命令創(chuàng)建一個(gè)密碼:
引用
# slappasswd
New password:
Re-enter new password:
{SSHA}3c6DQ4xIKU/7Qz22Y2S2MgOoHhQkasR/
接著,參考以前的文檔,修改slapd.conf中相關(guān)的信息,例如:
引用
database????????bdb
suffix??????????"dc=example,dc=com"
checkpoint??????1024 15
rootdn??????????"cn=Manager,dc=example,dc=com"
#rootpw??????????secret
rootpw?{SSHA}3c6DQ4xIKU/7Qz22Y2S2MgOoHhQkasR/
access to *
????????by dn.exact="cn=Manager,dc=example,dc=com"?read
????????by * none
藍(lán)色標(biāo)注的是密碼,默認(rèn)是注釋的或?yàn)槊魑牡摹皊ecret”,這里直接使用slappasswd命令生成的密碼。
2.生成配置數(shù)據(jù)
正如前面所說的,服務(wù)運(yùn)行時(shí)并不會(huì)讀取slapd.conf 文件,而是從/etc/openldap/slapd.d目錄中讀取相關(guān)信息。
我們打開slapd.d/cn=config/olcDatabase={1}bdb.ldif 文件會(huì)看到以slapd.conf.bak生成的信息:
引用
# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb.ldif
olcDatabase: {1}bdb
olcSuffix:?dc=my-domain,dc=com
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN:?cn=Manager,dc=my-domain,dc=com
所以,接下來要做的,就是先把這些數(shù)據(jù)刪掉:
# rm -rf /etc/openldap/slapd.d/*
然后重新生成新配置數(shù)據(jù):
引用
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
看看新生成的配置數(shù)據(jù)是否匹配:
引用
# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb.ldif
dn: olcDatabase={1}bdb
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
olcSuffix:?dc=example,dc=com
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN:?cn=Manager,dc=example,dc=com
不錯(cuò)吧。但為了便于slapd服務(wù)讀取,需要改一下宿主:
引用
# chown -R ldap.ldap slapd.d/
# ll slapd.d/
drwxr-x---. 3 ldap ldap 4096 10月 18 05:17 cn=config
-rw-------. 1 ldap ldap 1007 10月 18 05:17 cn=config.ldif
默認(rèn)權(quán)限是沒問題的,不需修改。
3.生成bdb數(shù)據(jù)
配置文件中,默認(rèn)指定把數(shù)據(jù)存放在/var/lib/ldap目錄下。啟動(dòng)LDAP服務(wù)前,還需要拷貝一個(gè)DB_CONFIG文件:
# cp /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap.ldap /var/lib/ldap/DB_CONFIG
若不拷貝該文件,會(huì)報(bào)錯(cuò),請(qǐng)見附錄。啟動(dòng)slapd服務(wù):
引用
# service slapd start
正在啟動(dòng) slapd:?????????????????????????????????????????? [確定]
4.導(dǎo)入數(shù)據(jù)
為了可正確訪問LDAP數(shù)據(jù)庫,還需要導(dǎo)入初始數(shù)據(jù)。使用vi 創(chuàng)建一個(gè)ldif文件,內(nèi)容如下:
引用
# cat example.ldif
dn:dc=example,dc=com
objectclass:dcObject
objectclass:organization
o:Example,Inc.
dc:example
dn:cn=Manager,dc=example,dc=com
objectclass:organizationalRole
cn:Manager
執(zhí)行l(wèi)dapadd命令導(dǎo)入:
引用
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f example.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"
adding new entry "cn=Manager,dc=example,dc=com"
提示輸入密碼時(shí),輸入開始由slappasswd生成,并寫入slapd.conf 配置模板rootpw部分后面的密碼。
至此,LDAP配置已完成。
5.備份配置模板
為免出現(xiàn)誤會(huì),通常建議把配置文件sladp.conf 拷貝為.bak 文件,作為模板保存:
引用
# mv slapd.conf slapd.conf.bak
mv:是否覆蓋"slapd.conf.bak"? y
三、使用phpLDAPadmin訪問
phpLDAPadmin是使用php編寫的,易于訪問LDAP數(shù)據(jù)庫的Web工具。從官網(wǎng)下載后,解壓到/var/www/html 目錄下,并改名、賦予合適的屬主。
引用
# ll /var/www/html/phpldapadmin/ -d
drwxr-xr-x. 11 apache apache 4096 10月 18 03:45 /var/www/html/phpldapadmin/
然后,拷貝一個(gè)配置文件:
# cd /var/www/html/phpldapadmin/config
# mv config.php.example config.php
即可配置完成。
訪問http://ip/phpladpadmin:
輸入slapd.conf 配置模板中的rootdn 部分作為登陸DN,rootpw 部分為密碼。
登錄成功
四、附錄
1.若系統(tǒng)存在遺留數(shù)據(jù),可刪除相關(guān)數(shù)據(jù)后重新配置
# rm -rf /var/lib/ldap/*
# rm -rf /etc/openldap/slapd.d/*
2.執(zhí)行l(wèi)dapadd 命令時(shí)報(bào)錯(cuò)
引用
ldap_bind: Invalid credentials (49)
這是由于/etc/openldap/slapd.d 目錄中使用的數(shù)據(jù)與執(zhí)行導(dǎo)入命令時(shí)設(shè)置的DN 路徑不符。
解決辦法是,修改ldapadd 中-D 參數(shù)后面指定的DN值,或使用slapd.conf 配置模板生成新的配置數(shù)據(jù)。方法可見上面。
3.執(zhí)行l(wèi)dap_add命令時(shí)報(bào)錯(cuò)
引用
Invalid syntax (21)
這通常的原因是導(dǎo)入的ldif 中存在不合法的Class,與Schema 中定義不符。例如:objectclass:organizationalRole 寫成 objectclass:organizational 等等。
解決方法是,修改Schema文件,或使用正確的Class定義。
4.重啟slapd服務(wù)或執(zhí)行slaptest 時(shí)報(bào)錯(cuò)
引用
bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).
原因是/var/lib/ldap目錄中缺少DB_CONFIG文件,參考上面的方法從openldap-servers 包中拷貝一份,并賦予合適的屬主即可。
五、參考資料
Red Hat 6: How to resolve ldapadd ldap_bind: Invalid credentials (49)
centos 簡單安裝 openldap
相關(guān)日志
[原]操作ldap 數(shù)據(jù)庫
[原]LDAP服務(wù)介紹
轉(zhuǎn)載于:https://blog.51cto.com/wjcaiyf/1601204
總結(jié)
以上是生活随笔為你收集整理的执行ldapadd 命令时报错:ldap_bind: Invalid credentials (49)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超全局变量
- 下一篇: Citrix桌面及应用虚拟化系列之三:活