我正在尝试保护现有的 OpenLDAP 安装,其中要求允许匿名用户在知道 LDAP 中特定用户条目的 uid 的情况下检索有关记录的信息。假设结构如下:
dc=example,dc=com
ou=People
uid=user1
uid=user2
ou=Groups
cn=user1
memberUid:user1
cn=user2
memberUid:user2
cn=common
memberUid:user1
memberUid:user2
现在,如果匿名用户知道 LDAP 中存在条目 uid=user1,他们应该能够检索此用户所属组的列表。但是他们应该无法发现其他组。
因此ldapsearch -b "ou=Groups,dc=example,dc=com"
不应返回任何内容,而ldapsearch -b "ou=Groups,dc=example,dc=com" "(&(objectClass=posixGroup)(memberUid=user1))"
应返回 user1 是成员的所有组。
到目前为止,我尝试了几种不同的 ACL,但都没有成功。要么搜索有效,但也可以列出所有组,要么无法列出所有组,但搜索无效。
有没有办法使用 ACL 实现所需的行为?
PS:数据库使用标准 nis 模式,因为数据库中已经有数据,因此更改为 rfc2307bis 不是一种选择(并且还有其他原因导致在这种情况下无法进行这种更改)。