但當初接手這裡的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陽吃死死吧~~
感謝以下文件:
- LDAP Setup and Configuration Guide: Load Data Into the Directory Server
- Sun Java System Delegated Administrator 6.4 管理指南: 合併和移除 ACI
- Forum:
- OpenDS Reference: ACI Syntax
- Sun ONE and Netscape Directory Server Access Control Overview
- http://groups.google.com/group/comp.unix.solaris/browse_thread/thread/3cfd8a33b0bb88f0?pli=1