Ребята такая трабла (трабла потому что не знаю как правильно сделать).Есть дерево в ldap дереве, и такие ветки по доменам как:
dc=domen1,dc=ldap,dc=localdomain
dc=domen2,dc=ldap,dc=localdomain
dc=domen3,dc=ldap,dc=localdomainИ заведено 3 пользователя для чтения паролей юзеров из каждого домена отдельно:
cn=kontroller1,ou=kontrol-users,dc=ldap,dc=localdomain из домена dc=domen1,dc=ldap,dc=localdomain
cn=kontroller2,ou=kontrol-users,dc=ldap,dc=localdomain из домена dc=domen2,dc=ldap,dc=localdomain
cn=kontroller3,ou=kontrol-users,dc=ldap,dc=localdomain из домена dc=domen3,dc=ldap,dc=localdomainТак вот когда прописываю в кофиге права в таком виде:
access to dn="dc=domen1,dc=ldap,dc=localdomain" attr=userPassword
by dn="cn=kontroller1,ou=kontrol-users,dc=ldap,dc=localdomain" read
access to dn="dc=domen2,dc=ldap,dc=localdomain" attr=userPassword
by dn="cn=kontroller2,ou=kontrol-users,dc=ldap,dc=localdomain" read
access to dn="dc=domen3,dc=ldap,dc=localdomain" attr=userPassword
by dn="cn=kontroller3,ou=kontrol-users,dc=ldap,dc=localdomain" readТо эти юзери читают про юзеров все кроме паролей, как мне правильно прописать для них права доступа.
Вот полная таблица доступа:
access to attrs=userPassword,shadowLastChange
by self write
by anonymous auth
by dn="cn=admin,dc=ldap,dc=localdomain" write
by * none
access to dn.base=""
by * read
access to *
by self write
by dn="cn=admin,dc=ldap,dc=localdomain" write
by * read
access to dn="dc=domen1,dc=ldap,dc=localdomain" attr=userPassword
by dn="cn=kontroller1,ou=kontrol-users,dc=ldap,dc=localdomain" read
access to dn="dc=domen2,dc=ldap,dc=localdomain" attr=userPassword
by dn="cn=kontroller2,ou=kontrol-users,dc=ldap,dc=localdomain" read
access to dn="dc=domen3,dc=ldap,dc=localdomain" attr=userPassword
by dn="cn=kontroller3,ou=kontrol-users,dc=ldap,dc=localdomain" readЗарание благодарен.
> Вот полная таблица доступа:Думаю, что здесь это правило не разрешает чтение атрибутов, т.к. применяется первым. Пользователи kontroller1, kontroller2, kontroller3 подпадают под действие последнего фильтра и следующее правило уже не используется.
access to attrs=userPassword,shadowLastChange
by self write
by anonymous auth
by dn="cn=admin,dc=ldap,dc=localdomain" write
by * noneСсылка на руководство администратора OpenLDAP 2.4: http://pro-ldap.ru/tr/admin24/access-control.html
8.4.10. Если что-то работает не так, как ожидалосьРассмотрим следующий пример:
access to *
by anonymous authaccess to *
by self writeaccess to *
by users readВам может показаться, что данные правила позволят любому пользователю пройти аутентификацию, прочитать любые записи из каталога и изменить свои данные, если аутентификация пройдена. Однако в этом примере будет работать только аутентификация, а ldapsearch никогда не вернёт данных. Проблема в том, что SLAPD применяет настройки доступа последовательно, строка за строкой, и останавливается на первой совпавшей части правил доступа (в данном случае: to *).
Чтобы получить то, что мы хотели, файл должен выглядеть следующим образом:
access to *
by anonymous auth
by self write
by users readОсновное правило: "сначала определяются более конкретные правила, а в конце - более общие".
Смотрите также slapd.access(5), а для поиска ошибок - loglevel 128 и slapacl(8).
> Ссылка на руководство администратора OpenLDAP 2.4: http://pro-ldap.ru/tr/admin24/access-control.htmlCпасибо большое, http://pro-ldap.ru/tr/admin24/access-control.html помогло, права разграничиваются должным образом как я и хотел.