Я застрял, пытаясь разрешить пользователям openLDAP, которые находятся в определенной группе (Пример: cn = Admins, dc = mydomain, dc = com
), до создавать, изменять, обновлять и удалять
пользователей, которые находятся в другом организационном подразделении
(Пример: ou = Users, dc = mydomain, dc = com
) уже около двух недель. Я сделал все, что в моих силах, чтобы разобраться в этом. Например, поиск через Google, поиск через сбой сервера и, наконец, поиск через stackoverflow , но безрезультатно. Я новичок в openLDAP, и, вероятно, это ошибка и / или что-то, что я упускаю из виду с атрибутом olcAccess
в dn: olcDatabase = {1} hdb, cn = config
.
Admin Group.ldif
dn: cn=Admins,dc=ldapserver,dc=com
changetype: add
objectClass: groupOfNames
objectClass: top
member: cn=admin,ou=Users,dc=ldapserver,dc=com
cn: Admins
Users.ldif
dn: ou=Users,dc=ldapserver,dc=com
changetype: add
objectClass: organizationalUnit
objectClass: top
ou: Users
OlcAccess по умолчанию
Примечание: Это списки ACL по умолчанию, которые поставляются с новой установкой сервера openLDAP.
dn: olcDatabase={1}hdb,cn=config
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
Обратите внимание на 1: Поскольку я новичок в openLDAP, я не устанавливал никаких других ACL
, кроме тех, которые появляются по умолчанию при первой установке сервера openLDAP.
Обратите внимание на 2: Alex
ACL в openldap всегда оцениваются сверху вниз в списке строк с номерами {0}, {1}, .. Как только условие выполнено, оценка немедленно остановлена (предполагается, что прерывание не используется).
В списках ACL по умолчанию, установленных Ubuntu и соответствующих требованиям, есть строка:
olcAccess: {2} to * by * read
to * by *: все встретил, добавление строк после не имеет никакого эффекта.
Решение, обсуждавшееся на this ссылка и выше должна решить вашу проблему, я предлагаю вам попробовать этот список ACL:
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to dn.subtree="ou=Users,dc=ldapserver,dc=com"
by group/groupOfUniqueNames/uniqueMember="cn=Admins,dc=ldapserver,dc=com" write
и изменить objectClass группы администраторов на groupOfUniqueNames.