У меня есть домен (назовем его 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 нет такого правила по умолчанию?