2010年8月21日 星期六

Solaris native LDAP ldaplist 顯示 userPassword 問題

其實以前幾乎沒碰過LDAP,
但當初接手這裡的mail server時就有發現,
Solaris上有個特有的ldaplist指令,
在秀一些資訊時是很方便,無需特殊權限即可執行,但ldaplist -l passwd居然會顯示到任何人的userPassword!

最近在測試FreeBSD LDAP client + Solaris LDAP server時才發現Sun自己的LDAP還真有點難搞,然後又想起ldaplist的問題......
輪休日還念念不忘,google半天總算找出原因了!

Sun官方都是教Solaris LDAP client用cn=proxyagent,ou=profile,....來bind,
而常用的模式是,使用者驗證密碼時,proxyagent讀取userPassword到本機來做比對,
所以要給proxyagent讀取的權限,而ldaplist是直接吃ldapclient的設定,
當然也是用proxyagent的權限讀到資料。
不過那時在僅使用pam_unix時;用pam_ldap時,密碼是傳送到server端去比對,
proxyagent不用讀密碼也無妨,
但在Sun Directory Server 5.x以後,用idsconfig產生schema時,
預設有個ACI叫LDAP_Naming_Services_proxy_password_read,
所以拿掉它就OK了...

首先用ldapsearch -D ROOTBINDDN -s base -b rootSuffix "aci=*" aci
查看aci長怎樣(注意指令最後沒aci是不會顯示aci的...),
找到LDAP_Naming_Services_proxy_password_read那項後,
copy起來用ldapmodify delete掉即可。

真不愧是敦X,只會照者文件弄而不會思考......
一堆爛攤子,不想辦法幫這邊換成OpenLDAP就繼續等者被X陽吃死死吧~~

感謝以下文件: