Я застрял, пытаясь разрешить пользователям openLDAP, которые находятся в определенной группе (EX: cn=Admins,dc=mydomain,dc=com
) к create, modify, update, and delete
пользователи, которые находятся в другом organizationalUnit
(Пример: ou=Users,dc=mydomain,dc=com
) около двух недель. Я сделал все, что в моих силах, чтобы разобраться в этом. Например, поиск через Google, поиск через serverfault, и, наконец, поиск по переполнение стека но безрезультатно. Я новичок в 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, я не устанавливал других ACLs
кроме тех, которые появляются по умолчанию при первой установке сервера openLDAP.
Обратите внимание 2: Прежде чем я задал свой вопрос, я попробовал этот вопрос Вот что явно не сработало для меня.
Спасибо алекс
ACL в openldap всегда оцениваются сверху вниз в списке строк с номерами {0}, {1}, .. Как только условие выполнено, выполняется оценка немедленно остановлен (при условии, что перерыв не используется).
В списках ACL по умолчанию, установленных Ubuntu и соответствующих требованиям, есть строка:
olcAccess: {2}к * автор: * читать
to * by *: все встретил, добавление строк после не имеет никакого эффекта.
Решение, обсуждаемое на эта ссылка и выше должно решить вашу проблему, я предлагаю вам попробовать этот список 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.