У меня есть следующая структура:
dc=th,dc=company,dc=com
|
|->dmc
|
|->dmc_customer_company
Я создаю группу для управления write
доступ к dmc_customer_company
.
Группы, разделитесь на уровни:
app_all
app_dmc
app_dmc_company1
Мой сценарий (отформатированный для помощи пониманию)
dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by self write
by anonymous auth
by dn="cn=admin,dc=th,dc=company,dc=com" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write
by dn="cn=admin,dc=th,dc=company,dc=com" write by * read
olcAccess: {3}to dn.subtree="dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_all,ou=Groups,dc=th,dc=company,dc=com" manage
by * break
olcAccess: {4}to dn.subtree="o=dmc,dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_dmc,ou=Groups,dc=th,dc=company,dc=com" manage
by * break
olcAccess: {5}to dn.subtree="o=dmc_company1,o=dmc,dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com" manage
by * break
У меня есть пользователь:
cn=company1_admin,ou=application,dc=th,dc=company,dc=com
и:
dn: cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com
objectClass: groupOfNames
objectClass: top
cn: app_dmc_company1
member: cn=company1_admin,ou=application,dc=th,dc=company,dc=com
member: ou=Groups,dc=th,dc=company,dc=com
Я подаю заявку с: ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f <file>
Я проверяю конфигурацию с: ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config"
и они - внутренняя конфигурация
Где я неправильно? Поскольку, когда:
company1_admin
o=dmc_company1,o=dmc,dc=th,dc=company,dc=com
Я получаю Ldap code: 50 LDAP_INSUFFICIENT_ACCESS
Я использую OpenLDAP без slapd.conf в Ubuntu 14.04. OpenLDAP является версией 2.4.1
Спасибо
Я бы проверил доступ к псевдозаписи "дети"
Согласно openldap-2. 4 manual, acl section:
Для добавления или удаления записи субъект должен иметь доступ на запись к атрибуту записи И должен иметь доступ на запись к родительскому атрибуту записи "дети"
Таким образом, в качестве точки зрения:
olcAccess: {5}to dn.subtree="o=dmc_company1,o=dmc,dc=th,dc=company,dc=com"
by self write
by group.exact="cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com" write
by * break
olcAccess: {6}to dn.children="o=dmc_company1,o=dmc,dc=th,dc=company,dc=com"
by group.exact="cn=app_dmc_company1,ou=Groups,dc=th,dc=company,dc=com" write
by * break