Ldap
沒有從 OpenLDAP 返回 Root DSE
我正在嘗試在 ubuntu 9.10 上設置一個 OpenLDAP 伺服器,它使用 slapd 版本 2.4.18。
初始化並填充新的 hdb 數據庫後,一切似乎都正常,但我無法讓伺服器返回根 DSE。跑步
ldapsearch -x -W -D 'cn=manager,dc=example,dc=org' \ -b '' -s base '(objectclass=*)' +
剛回來
# extended LDIF # # LDAPv3 # base <> with scope baseObject # filter: (objectclass=*) # requesting: + # # search result search: 2 result: 0 Success # numResponses: 1
我的 hdb 數據庫 ACL 設置如下:
olcAccess: to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn.base="cn=manager,dc=example,dc=org" write by * none olcAccess: to dn.base="" by * read olcAccess: to * by self write by dn.base="cn=manager,dc=example,dc=org" write by * read
根據我的經驗,這個設置應該返回一個有效的根 DSE,所以如果有人能給我一個關於發生了什麼的線索……
這實際上是針對Ubuntu 9.10 (karmic)送出的錯誤#427842 。
要解決此問題,請將以下內容複製到 fixRootDSE.ldif:
dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcAccess olcAccess: to dn.base="" by * read olcAccess: to dn.base="cn=subschema" by * read
並執行
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f fixRootDSE.ldif
這應該提供對根 DSE 的匿名訪問。
在綁定為使用者之前,不應該匿名查詢Root DSE嗎?所以你根本不應該使用 -W 或 -D 。
我的 OpenLDAP 伺服器響應以下內容:
$ ldapsearch -x -b '' -s base
和
# extended LDIF # # LDAPv3 # base <> with scope baseObject # filter: (objectclass=*) # requesting: ALL # # dn: objectClass: top objectClass: OpenLDAProotDSE # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1