2
« : 06 Ноябрь 2012, 21:47:59 »
Доброго всем ...
Если не затруднит, помогите разобраться с формированием листа доступа, сам что-то ни как не могу разобраться.
Суть такова: хочу реализовать следющие права доступа
1. На первом этапе пользователи из группы "ldapmanagers" могут создавать (только создавать, удалять не могут) пользовательские аккаунты в указанной ветке каталога;
2. далее нужно дать тем же пользователям из группы "ldapmanagers" права изменять значения из разрешенного списка атрибутов.
Разрешения для создания записей я сделал следуюущим образом (1-е правило):
access to dn.subtree="ou=Employees,o=mycompany.com"
attrs=children
by set="[cn=ldapmanagers,ou=Groups,o=mycompany.com]/memberUid & user/uid" =a
access to dn.subtree="ou=Employees,o=mycompany.com" filter=(objectClass=mycompanyEmployee)
by set="[cn=ldapmanagers,ou=Groups,o=mycompany.com]/memberUid & user/uid" =arscdx
by * break
Разрешения на модификацию значений аттрибутов вот таким (2-е правило):
access to dn.subtree="ou=Employees,o=mycompany.com" filter=(objectClass=mycompanyEmployee)
attrs=l,st,street,title,postalAddress,postalCode,co,employeeType,jpegPhoto,homePhone,cellPhone
by set="[cn=ldapmanagers,ou=Groups,o=mycompany.com]/memberUid & user/uid" write
by * break
И, наконец, суть проблемы, в источнике которой я ни как не могу разобраться такова:
если я вношу ACL в том виде, в котором я указал в slapd.conf, то пользователям из группы "ldapmanagers" доступна возможность создания пользователей (с запретом их последуюущего их удаления), но при этом при попытке модификации значений аттрибутов LDAP-сервер возвращает "Insufficient access" и, соответственно не дает пользователю модифицировать записи.
Если я добавляю control "continue" в предпоследнюю строку первого правила, то есть привожу первое правило в такому виду:
access to dn.subtree="ou=Employees,o=mycompany.com"
attrs=children
by set="[cn=ldapmanagers,ou=Groups,o=mycompany.com]/memberUid & user/uid" =a
access to dn.subtree="ou=Employees,o=mycompany.com" filter=(objectClass=mycompanyEmployee)
by set="[cn=ldapmanagers,ou=Groups,o=mycompany.com]/memberUid & user/uid" =arscdx continue
by * break
то пользователи из группы "ldapmanagers" могут редактировать записи (начинает отрабатывать второе правило), но теряют возможность добавлять новые, то есть перестает работать первое правило.
Версия сервера у меня OpenLDAP 2.4 самописной схемой и конфигурацией в salpd.conf, крутится он в Debian Linux. Если кто-нибудь сталкивался с такой конфигурацией доступа, поделитесь, пожалуйста, решением, ато я ни как не могу найти сути проблемы.
Заранее спасибо.