LINUX.ORG.RU
ФорумAdmin

Права доступа в OpenLDAP


0

0

Есть OpenLDAP-2.0.23-4. В нем есть дерево вида:

        A
      /   \
    B       C
  / | \   / | \
  .....   .....

Хочу сделать так, чтоб при запросе
ldapsearch -b "dc=A" -s sub
ВСЕМ пользователям (кроме self и rootdn) не выдавалось ничего,
но в то же время, чтоб при запросах
ldapsearch -b "dc=B,dc=A" -s sub и
ldapsearch -b "dc=C,dc=A" -s sub
им выдавалась вся информация, содержащаяся в ветвях B и C.
Можно ли это как-то сделать средствами access в slapd.conf ?
Если можно, то как ?
★★★★★

Можно. Вспомнить для начала директиву

access <object> to <subject> <permission> <action>

Например подобным образом:

access to dn=.*,dc=b,dc=a
   by dn=.*,dc=c,dc=a none stop
   by dn=.*,dc=b,dc=a write stop

Могу ошибаться, но принцип ты должен понять :-)

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Я конечно извиняюсь, но по-моему это немного не то, что я хотел.
Мне нужно не "by dn=.*,dc=b|c,dc=a", а "by *", а вот "dn=.*,dc=b|c,dc=a" использовать именно в "access to".
Т.е. что-то типа:
access to dn.subtree="dc=a"
        by dn="login=admin" write
        by self write
        by * none

access to dn.subtree="dc=b,dc=a"
        by dn="login=admin" write
        by self write
        by * read

access to dn.subtree="dc=c,dc=a"
        by dn="login=admin" write
        by self write
        by * read

Но такое не работает. Как ни пытаюсь оно при -b "dc=a" или -b "dc=b|c,dc=a"
либо ничего не выдает и в том, и в другом случае, либо выдает все, как с первой search_base, так и со второй.
Хочу чтоб при -b "dc=a" ничего не выдавало (либо ошибку типа permission denied),
а при -b "dc=b,dc=a" выдавало все содержимое ветви B (аналогично для ветви C).

spirit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.