歡迎您光臨本站 註冊首頁

請教OpenLDAP entry與屬性匹配的問題

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

請教OpenLDAP entry與屬性匹配的問題

目前運行在舊版本OpenLDAP 2.0.27基礎上的系統中有一個正常工作的DN如下:
dn: cmac=00:04:AC:AE:E5:4F, ou=inventory, dc=hugehard,dc=com
objectClass: top
objectClass: cm
cmac: 1,6,00:04:AC:AE:E5:4F

其中定義的cmac schema為
attributetype ( 1.3.6.1.4.1.11382.1.55
        NAME 'cmac'
        DESC 'Cable Modem MAC Address'
        EQUALITY caseIgnoreIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128}
        SINGLE-VALUE )

現在將系統升級到新版本OpenLDAP 2.3.32,根據新的應用系統需要將schema修改如下
attributetype ( 1.3.6.1.4.1.11382.1.55
        NAME 'cmac'
        DESC 'Cable Modem MAC Address'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
        SINGLE-VALUE )

當試圖把前面的entry裝入到新版本OpenLDAP 2.3.32時,出現如下錯誤:
error code 64 - value of naming attribute 'cmac' is not present in entry

已經試過將schema改回到和舊版本使用的相同,但結果還是出現同樣的錯誤。現在的問題是,在OpenLDAP 2.3.32下試驗的結果,必須將DN中的attribute行 "cmac: 1,6,00:04:AC:AE:E5:4F"改到和前面的"dn: cmac=00:04:AC:AE:E5:4F"相同,也就是必須把「cmac: 1,6,00:04:AC:AE:E5:4F」中的「1,6,」去掉,然後才能正常把這個DN裝入到新版OpenLDAP 2.3.32中。因為應用系統的需要,必須使用「cmac: 1,6,00:11:22:33:44:55」這樣的格式,我嘗試過把DN行改為
dn: cmac=1,6,00:04:AC:AE:E5:4F, ou=inventory, dc=hugehard,dc=com來讓其與「cmac: 1,6,00:04:AC:AE:E5:4F」相同,
但系統也不允許, 給出錯誤信息為:
Invalid name:dn: cmac=1,6,00:04:AC:AE:E5:4F, ou=inventory, dc=hugehard,dc=com。

請教大家的問題是:是不是新版本OpenLDAP 2.3.32規定dn:那一行的"cmac="定義的名字必須與後面的屬性定義「cmac: 」後面的值完全一樣才可以?或者是我的schema沒有正確書寫來滿足我的需要?有沒有可能找到一種解決方法來使用「cmac: 1,6,00:04:AC:AE:E5:4F」這樣的屬性值?在OpenLDAP 2.0.27中是已經成功地這樣使用了的,但在2.3.32版中目前我還沒找到怎麼處理,希望各位幫忙出點主意。

謝謝先。
《解決方案》

學習...

這兩個值應該一樣才對啊,真是怪事情!關注中...
既然你可以導進去,你在把這個節點導出來看看,到底是怎麼回事?或導出一個其它的普通點看看格式
《解決方案》

可能我寫得有點複雜了你沒完全看明白我的問題

原帖由 angel_z_yu 於 2007-9-21 18:39 發表 http://bbs.chinaunix.net/images/common/back.gif
這兩個值應該一樣才對啊,真是怪事情!關注中...
既然你可以導進去,你在把這個節點導出來看看,到底是怎麼回事?或導出一個其它的普通點看看格式

我的理解是這兩個值應該一樣(根據現在導入時的出錯提示信息),但在原來的系統中確實使用了不一樣的值卻可以正常工作,所有類似的DN有數萬條全都是這樣的,差別是原來的系統使用的是OpenLDAP 2.0.27, 現在出錯不能導入的是在OpenLDAP 2.3.32下。

現在我想弄明白的是,是否OpenLDAP 2.3.32本身的規定這兩個值必須完全一樣而在舊版本OpenLDAP 2.0.27中沒有這樣的規定?或者是因為系統配置或者SCHEMA的編寫中有什麼需要改動的? 因為應用系統的原因,最好的解決方案是在LDAP中保留原來的狀態,否則需要另外找人改動原來的應用程序比較麻煩,如果能夠通過改動SCHEMA等辦法來完成就好了。

希望大家幫助提供信息和思路,謝謝。
《解決方案》

回復 #3 001CEO 的帖子

是這樣,舊版本在屬性值檢查上做的比較差,dn中的值如果在屬性值中不存在也不會出錯。
新版本對這方面進行了加強,如果實在不想修改程序,把配置中的schemacheck on
變成off就行了。
《解決方案》

謝謝 zhjfirst,不過問題還是沒解決

不過又看了一遍官方網站和MAN PAGE,只發現有對REPLICA的SCHEMA CHECK設置並且預設值是OFF

syncrepl rid=<replica ID>
                provider=ldap://<hostname>[:port]
               

對於master LDAP,沒找到怎麼做可以關閉SCHEMA CHECK

[火星人 ] 請教OpenLDAP entry與屬性匹配的問題已經有462次圍觀

http://coctec.com/docs/service/show-post-35513.html