Рейтинг:0

Разрешить любому пользователю с определенным uid управлять всей OU

флаг au

У меня есть домен (назовем его dc=пример,dc=org)

В домене есть филиал (ou=users,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org).

Это простой объект безопасности в этом домене (uid=admin,ou=managers,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org).

мне нужно uid=админ,*** пользователь должен иметь полный (управлять) доступ к ou=пользователи,*** ветка, поэтому я добавил следующее олкакцесс записывать:

к
  dn.subtree="ou=users,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org"
к
  dn.exact="uid=admin,ou=managers,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org"

Он добавил к набору правил по умолчанию:

DN: olcDatabase={1}mdb,cn=config
olcAccess: {0}к * по dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth управлять * break
olcAccess: {1}в attrs=userPassword,shadowLastChange самостоятельно написать dn="cn=a
 dmin,dc=example,dc=org" написать анонимно авторизовавшись * none
olcAccess: {2}для * самостоятельно читать dn="cn=admin,dc=example,dc=org" писать
 * никто
olcAccess: {3}к dn.subtree="ou=users,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=
 infra,dc=example,dc=org" от dn.exact="uid=admin,ou=managers,ou=ftp,ou=servi
 ces,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org" управлять

Но, кажется, что-то не так. Когда я бегу ldapsearch -D uid=admin,ou=managers,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org -W -b ou=users,ou=ftp, ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org, я получаю следующий результат:

# расширенный LDIF
#
# LDAPv3
# база <ou=users,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org> с поддеревом области видимости
# фильтр: (objectclass=*)
# запрос: ВСЕ
#

# результат поиска
поиск: 2
результат: 32 Нет такого объекта

# числоОтветов: 1
команда завершена с кодом выхода 32

Объект доступен и cn=admin,dc=пример,dc=org может видеть это без каких-либо затруднений, так что кажется, что мое правило доступа неправильно. Но что именно?

Кажется, что правило по умолчанию № 2 ({2} в * самостоятельно прочитано dn="cn=admin,dc=example,dc=org" запись * нет) срабатывает раньше, чем правило, которое я добавил. Значит ли это, что я должен всегда добавить мои пользовательские правила перед ним?

И почему это правило по * нет? Не противоречит ли Документация OpenLDAP?

Политика управления доступом по умолчанию разрешает чтение всем клиентам.

Кажется, что правило № 2 (я имею в виду это:

к * 
самопрочитано
по dn="cn=admin,dc=example,dc=org" написать
по * нет

) вовсе не "по умолчанию". Я только что нашел еще один экземпляр OpenLDAP (я развернул его около 4 лет назад). Этот экземпляр (2.4.40) вообще не имеет такого правила. Похоже, что он не был добавлен самим OpenLDAP, а был добавлен кем-то или чем-то вручную. Я прав? Разве в OpenLDAP нет такого правила по умолчанию?

Michael Ströder avatar
флаг cn
Если вы серьезно относитесь к делегированному администрированию, динамическим представлениям для службы и т. д., возможно, вам стоит поближе познакомиться с [Ã-DIR] (https://ae-dir.com). Я, как автор, конечно, необъективен.
Рейтинг:0
флаг cn

Общий совет:

  • Порядок имеет значение!
    Это общее утверждение относится к порядку списков ACL и порядку предложений <who>.
  • Каждый ACL неявно заканчивается по * нет что означает, что потоки управления останавливаются на этом.
  • Отладьте ACL, запустив slapd с ACL статистики на уровне журнала
  • Читать slapd.access(5) очень внимательно и не один раз!

Например. AFAICS в вашем примере ACL № 2 маскирует ACL № 3.

Сделайте себе одолжение: вместо того, чтобы изобретать это колесо ad hoc, еще раз внимательно посмотрите на мой Ã-DIR. Он имеет множество списков ACL для обеспечения делегированного администрирования и ограничения видимости на основе четкой модели данных. Я, как автор, конечно, необъективен. В остальном я очень хорошо знаю, сколько работы предстоит вам, если вы пойдете по этому пути...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.