Temos um servidor OpenLDAP (2.4.45) que contém todos os nossos usuários, grupos, regras de sudo, etc.
Eu preciso conectar um novo aplicativo a este servidor, no entanto, este aplicativo requer que o usuário anônimo possa ler os atributos (ele saberá o DN exato para o qual precisa ler os atributos).
Agora, assumindo estrutura como:
o=Example(dc=example,dc=com)
ou=People
uid=user1
uid=user2
ou=Groups
cn=group1
cn=group2
Eu preciso limitar que os usuários anônimos podem obter todos os atributos de um usuário se souberem exatamente dn (como dn="uid = usuário1, ou = Pessoas, dc = exemplo, dc = com") e completamente incapazes de descobrir outros registros (se eles não sabem exatamente o dn para eles).
Lendo pela documentação do OpenLDAP Eu assumi que a seguinte ACL deveria funcionar:
olcAccess: {0}to dn.children="ou=Groups,dc=example,dc=com"
by * read break
olcAccess: {1}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by anonymous none stop
by * read
No entanto, parece que break
e stop
não produzem resultados esperados como consultas diretamente a "cn = teste, ou = Grupos, dc = exemplo, dc = com" resultam em No such object (32)
Qual é a maneira correta de alcançar o acima?