Наконец-то разобрался с этим. Чтобы это работало, есть много разных частей.
Сначала 2 правила ACL:
Access to dn.base="dc=example,dc=com" by \
dn.base="uid=testuser,ou=people,dc=example,dc=com" \
search
Access to dn.one="ou=people,dc=example,dc=com" \
attrs=entry,uid,cn,sn,gecos,mail,uidNumber,gidNumber by \
dn.base="uid=testuser,ou=people,dc=example,dc=com" \
read
dn.base
для доступа к 'для первого правила. Если бы это был 'dn.children', порядок имел бы значение. uid = testuser
доступ к поиску для dc = example, dc = com
, но не более того. . Без второго правила все, что вернулось бы, было то, соответствует ли поиск чему-либо или нет, а не тому, что он действительно нашел. uid = testuser
доступ на чтение ou = people
, а дети - на один уровень ( dn.one
). Возможность поиска включена в разрешение на чтение. записи
важен для второго правила, поскольку для выполнения поиска требуется доступ к этому атрибуту, чтобы иметь возможность сопоставить запись.