Openldap ACLs не работает

У меня есть следующая структура:

 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

Спасибо

0
задан 13 January 2015 в 07:59
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
0
ответ дан 5 December 2019 в 13:00

Теги

Похожие вопросы