OpenLDAP ACL防止匿名用户获取所有组的列表

我正在尝试保护现有的OpenLDAP安装,要求允许匿名用户检索有关logging的信息(如果它知道LDAP中特定用户条目的使用情况)。 假设结构如下:

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。 它既可以是search工作,也可以列出所有组,或者不能列出所有组,但search不起作用。

有没有办法使用ACL实现所需的行为?

PS:数据库使用标准的nis架构,因为数据库已经有数据更改为rfc2307bis不是一个选项(还有其他原因,为什么在这种情况下这种改变是不可能的)。

我不认为这是可能的,因为你不能限制哪些组可以阅读。 但是,OpenLDAP提供了另一种可能对您有帮助的方法。 这称为“反向组维护”(请参阅(过时)文档中的第12.8章)与memberOf覆盖。 基本上,它保存了用户所属的每个组的列表,这允许轻松查找这种types的信息。

为了帮助如何以现代的方式来做到这一点,用cn=config ,看看这里 。