OpenLDAP: ACL с использованием имени сокета и DN?

В OpenLDAP (2.4.45, на FreeBSD) я пытаюсь ограничить доступ DN к атрибуту, предоставляя доступ DN только при подключении через разъем; но безуспешно.

Я пытаюсь

olcAccess: to attrs=userPassword
  by dn.base="uid=pwreset,ou=service,dc=example,dc=edu" 
     sockname.exact="/var/run/openldap/ldapi"
  write

(идея заключается в том, что DN pwreset может использоваться сценарием автоматического сброса пароля, но этот DN будет иметь только этот доступ когда сценарий выполняется на той же машине, что и сервер LDAP).

Эта фраза по , похоже, соответствует продукции в Разд. 8.3 из документации по управлению доступом OpenLDAP , и замечание в slapd.access (5) о том, что элементы в поле «могут быть указаны в комбинации». И действительно, никаких синтаксических предупреждений не генерируется. Я предполагаю, что комбинация подразумевает И , а не ИЛИ - в документации это явно не указано. Я не могу найти примеров, раскрывающих это, ни в документации OpenLDAP, ни в Интернете.

Эта строфа работает, когда элемент sockname отсутствует, что говорит о том, что в остальном конфигурация работает так, как я ожидал.

Когда Я пытаюсь записать атрибут userPassword , используя этот DN, я получаю ошибку ldap_modify: Недостаточный доступ (50) .

В документации OpenLDAP (что несколько удивительно) явно не указано каков эффект этого элемента sockname , и на странице slapd.access (5) довольно косвенно говорится, что:

Операторы peername = , ] sockname = , domain = и sockurl = означают, что IP-адрес связывающегося хоста (в форме IP = < ip>: ​​<порт> для IPv4 или IP = []: для IPv6) или имя файла именованного канала связывающегося хоста (в форме ПУТЬ = <путь> при подключении через именованный канал) для имени узла, имя файла именованного канала для имени сокка, имя хоста для связи для домена и URL-адрес для связи для sockurl сравниваются с шаблоном для определения доступа.

Это не так. на самом деле говорят очень много.

Я совершенно неправильно понял смысл этой спецификации доступа, или есть другой способ сделать это?

0
задан 17 March 2018 в 14:54
1 ответ

Правильный синтаксис (по крайней мере для этой версии OpenLDAP):

olcAccess: to attrs=userPassword
  by dn.base="uid=pwreset,ou=service,dc=example,dc=edu"
     sockname.exact="PATH=/var/run/openldap/ldapi"
     write

Спасибо Quanah Gibson -Смонтируйте технический список openldap , чтобы указать на решение.

0
ответ дан 24 November 2019 в 02:59

Теги

Похожие вопросы