Ldap
LDAP 組訪問控制
我正在嘗試設置我們的 LDAP 伺服器,以便 pwmadmins 組的成員可以為他們更改人們的密碼。更具體地說,我們為 Tomcat 設置了 PWM,並試圖讓 pwmadmins 通過它更改人們的密碼。但是由於某種原因,pwmadmins 組中的人仍然沒有更改他人密碼的權限。
這是 olcDatabase={1}hdb.ldif 文件的 ALC 部分現在的樣子(我已經顯示了所有內容,儘管我只關心部分 {0}):
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=pwmadmin,dc=cs,dc=school,dc=edu" write by group.exact="cn=pwmadmins,ou=groups,dc=cs,dc=school,dc=edu" write by anonymous auth by self write by * none olcAccess: {1}to attrs=loginShell,gecos by dn="cn=admin,dc=cs,dc=school,dc=edu" write by self write by * read olcAccess: {2}to attrs=loginShell,gecos by dn="cn=pwmadmin,dc=cs,dc=school,dc=edu" write olcAccess: {3}to dn.base="" by * read olcAccess: {4}to * by dn="cn=admin,dc=cs,dc=school,dc=edu" write by * read
(為清楚起見,添加了新行。)我已經檢查了該網站上的其他一些類似問題的格式,以確保我的順序、間距等正確,但它仍然無法正常工作。我安裝了 memberOf 過濾器,並且我已經確認它在 PWM 上正常工作。當我讓我的 UID 能夠更改密碼時,它就可以正常工作了。所以這顯然與組語法有關,但我不確定是什麼。任何幫助深表感謝!
編輯:找到解決方案 - 見下文。
我可以通過將 pwmadmins 設置為 groupOfNames 而不是 posixGroup 來使其工作,然後通過實現以下程式碼:
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=pwmadmin,dc=cs,dc=school,dc=edu" write by set="[cn=pwmadmins,ou=groups,dc=cs,dc=school,dc=edu]/member & user" write by anonymous auth by self write by * none olcAccess: {1}to attrs=loginShell,gecos by dn="cn=admin,dc=cs,dc=school,dc=edu" write by self write by * read olcAccess: {2}to attrs=loginShell,gecos by dn="cn=pwmadmin,dc=cs,dc=school,dc=edu" write olcAccess: {3}to dn.base="" by * read olcAccess: {4}to * by dn="cn=admin,dc=cs,dc=school,dc=edu" write by * read