我有以下 openldap 服务器配置:
access to attrs=userPassword
by self write
by anonymous auth
by set="[cn=users,ou=Group,dc=my-company,dc=de]/memberUid & user/uid" write
by * none
# Allow everybody adding and changing Contacts
access to dn.subtree="ou=Contacts,dc=my-company,dc=de"
by set="[cn=users,ou=Group,dc=my-company,dc=de]/memberUid & user/uid" write
by * read
access to *
by self write
by dn.base="cn=admin,dc=my-company,dc=de" write
by set="[cn=sysadm,ou=Group,dc=my-company,dc=de]/memberUid & user/uid" write
by * read
它应该做的是:
- 允许每个人更改自己的密码
- 允许所有用户添加和更改联系人
- 允许“sysadm”组中的所有人更改所有内容
问题是,sysadms 不能更改任何用户密码。有什么提示吗?
引用OpenLDAP 管理员指南:
长话短说,请尝试以下操作:
顺便说一句,您真的要授予所有用户访问他们自己对象的所有属性的权限('通过自写'访问 * ...)吗?由于您仅在第一个 ACL 中限制对 userPassword 属性的写入访问,我想说这不是您想要的。
如果你这样做会发生什么?
IIRC slapd 使用第一个匹配规则。由于第一个块匹配 userPassword 但不允许系统管理员修改,因此不允许他们修改。