Openldap - пользователь LDAP не может добавить запись: Недостаточный доступ (никакой доступ для записи к родителю)

I'ld нравится делать addressbook в LDAP (для отправки по почте клиентов в первом шаге для моего RoundCube). Сервер является Debian 7.9, slapd 2.4.31 (OpenLDAP). После успешно установки, я создал поддерево для addressbook:

dn: ou=rcabook,dc=mydomain,dc=com
ou: rcabook
objectClass: top
objectClass: organizationalUnit

dn: ou=public,ou=rcabook,dc=mydomain,dc=com
ou: public
objectClass: top
objectClass: organizationalUnit

dn: ou=private,ou=rcabook,dc=mydomain,dc=com
ou: private
objectClass: top
objectClass: organizationalUnit

и обычный пользователь для RoundCube:

dn: cn=rcuser,ou=rcabook,dc=mydomain,dc=com
cn: rcuser
objectClass: organizationalRole
objectClass: simpleSecurityObject
userPassword:: e1f2g3....x3y2z1

Но когда я хочу сделать новую запись как rcuser, у меня есть эта ошибка:

ldapadd -f entry.ldif -D cn=rcuser,ou=rcabook,dc=mydomain,dc=com -W
Enter LDAP Password: 
adding new entry "cn=DOMAIN IT,ou=public,ou=rcabook,dc=mydomain,dc=com"
ldap_add: Insufficient access (50)
    additional info: no write access to parent

ou=public, ou=rcabook поддерево имеет специальный доступ в конфигурации:

# slapcat -n0
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=mydomain,dc=com
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=mydomain,dc=com" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=mydomain,dc=com" write by * read
olcAccess: {3}to dn.subtree="ou=public,ou=rcabook,dc=mydomain,dc=com" by users writ
 e
olcLastMod: TRUE
...

Какие полномочия я должен добавить, поскольку весь пользователь добавил бы записи в поддерево?

Спасибо,

a.

2
задан 17 October 2015 в 13:07
2 ответа

Из документации OpenLDAP ACL :

To add or delete an entry, the subject must have write access to 
the entry's entry attribute AND must have write access to the 
entry's parent's children attribute.

Таким образом, вам необходимо предоставить доступ к псевдоатрибутам записи и дочерним :

olcAccess: {3}to dn.entry="ou=public,ou=rcabook,dc=mydomain,dc=com" by users write
olcAccess: {4}to dn.children="ou=public,ou=rcabook,dc=mydomain,dc=com" by users write
0
ответ дан 3 December 2019 в 14:37

Примечание: я не уверен, что иметь доступную для записи общедоступную адресную книгу - хорошая идея.

olcAccess: {2} и olcAccess: {3} необходимо переупорядочить. to * by * read из olcAccess: {2} соответствует всему, что еще не найдено, что означает, что olcAccess: {3} никогда не оценивается.

0
ответ дан 3 December 2019 в 14:37

Теги

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