Файл slapd.conf состоит из набора параметров глобальной конфигурации, применяемых к slapd в целом (в том числе ко всем базам данных всех механизмов манипуляции данными), за которым следует ноль или более определений баз данных механизмов манипуляции данными, содержащих информацию, специфичную для конкретного механизма манипуляции данными. Имена параметров конфигурации нечувствительны к регистру символов; их значения, в зависимости от ситуации, могут быть чувствительными к регистру.
Общий формат slapd.conf:
# комментарий - эти параметры применяются ко всем базам данных <параметры глобальной конфигурации> # определение и параметры конфигурации первой базы данных database <тип первого механизма манипуляции данными> <параметры конфигурации, специфичные для первого механизма> # определение и параметры конфигурации следующей базы данных ...
Может быть включено сколько угодно разделов баз данных какого-либо механизма манипуляции данными. Глобальные параметры могут быть переопределены в разделах баз данных механизмов манипуляции данными (для параметров, которые определяются более одного раза, используется значение из их последнего определения в файле slapd.conf).
Если строка начинается с пробельного символа, она считается продолжением предыдущей строки. Одна физическая строка не должна быть длиной более 2000 байт.
Пустые строки и строки, начинающиеся с символа `#', игнорируются. Примечание: перед выполнением обработки комментария строки с продолжением преобразуются в одну строку.
Аргументы строк конфигурации разделяются пробельными символами. Если сам аргумент содержит пробельный символ, этот аргумент должен быть заключён в двойные кавычки. Если аргумент содержит символы двойной кавычки (`"') или обратного слэша (`\'), перед этими символами должен быть указан символ обратного слэша.
Доступные параметры конфигурации обсуждаются ниже в разделах "Параметры глобальной конфигурации", "Общие параметры механизмов манипуляции данными" и "Общие параметры баз данных". Параметры, специфичные для механизмов манипуляции данными, обсуждаются в man-страницах slapd-<backend>(5). Более подробную информацию о конфигурационном файле slapd можно найти в "Руководстве администратора OpenLDAP".
Описание атрибута с опцией пометки является подтипом описания этого атрибута без опций. За исключением этого, определяемые данным способом опции не имеют специальных семантик. Префиксы, определяемые данным способом, работают также, как опции `lang-': они определяют префиксы для опций пометки, начинающихся с этого префикса. То есть, если вы определили префикс `x-foo-', вы можете использовать опцию `x-foo-bar'. Кроме того, в операциях поиска и сравнения, префикс или имя диапазона (оканчивающееся на `-') совпадает со всеми опциями, начинающимися с этого имени, а также с опцией, имя которой совпадает с именем диапазона без `-' в конце. То есть, `x-foo-bar-' совпадает с `x-foo-bar' и с `x-foo-bar-baz'.
Согласно RFC 4520 опции, начинающиеся с `x-', зарезервированы для частных экспериментов. Другие опции должны быть зарегистрированы в IANA (смотрите раздел 3.5 RFC 4520). В OpenLDAP также есть встроенная опция `binary', но это опция передачи, а не пометки.
<dnstyle>:={exact|onelevel|children|subtree|regex}
В конфигурационном файле может быть задано несколько параметров authz-regexp для того, чтобы разрешить обработку нескольких шаблонов нахождения соответствия и замены. Шаблоны соответствия проверяются в том порядке, в котором они указаны в файле, обработка прерывается при нахождении первого успешного совпадения.
Примечание: Поддержка индексирования зависит от конкретного используемого механизма манипуляции данными. Также имейте ввиду, что при изменении этих установок обычно требуется удалить любые индексы, зависящие от этих параметров, и пересоздать их с помощью slapindex(8).
loglevel 129 loglevel 0x81 loglevel 128 1 loglevel 0x80 0x1 loglevel acl trace
эквивалентны. Ключевое слово any может быть использовано в качестве сокращения для включения журналирования на всех уровнях (эквивалент для -1). Ключевое слово none, или эквивалентное ему целочисленное представление, приводит к тому, что в журнал будут попадать только сообщения, выводимые независимо от заданного уровня журналирования. Фактически, если loglevel задан в 0, журналирования не происходит, поэтому для вывода высокоприоритетных сообщений требуется, как минимум, уровень none.
Значение по умолчанию для loglevel - stats. Данный уровень обычно также включается при использовании других уровней loglevel для упрощения анализа журналов.
Варианты {SHA} и {SSHA} используют алгоритм SHA-1 (FIPS 160-1), последний из них - с "солью".
Варианты {MD5}
Вариант {CRYPT} использует вызов crypt(3).
Вариант {CLEARTEXT} указывает на то, что новый пароль будет добавлен в атрибут userPassword в виде открытого текста.
Имейте ввиду, что данный параметр не влияет на обработку значений атрибута userPassword при выполнении пользовательскими приложениями других операций LDAP, таких как Add, Modify или иных.
Передаваемая в качестве аргумента строка должна быть в формате sprintf(3) и может включать один (и только один) шаблон подстановки %s. Этот шаблон будет заменяться строкой случайных символов из диапазона [A-Za-z0-9./]. Например, аргумент "%.2s" обеспечивает "соль" из двух символов, а аргумент "$1$%.8s" указывает некоторым версиям crypt(3) использовать алгоритм MD5 и обеспечивает "соль" из восьми случайных символов. Значение по умолчанию - "%s", при котором обеспечивается "соль" из 31-го символа.
Корневая DSE - это запись с информацией о сервере и его возможностях, содержащейся в операционных атрибутах.
У этой записи пустое DN, и получить её содержимое можно, например, таким запросом:
ldapsearch -x -b "" -s base "+"
Более подробную информацию можно найти в разделе 5.1 RFC 4512.
serverID 1
Для проверки того, какие шифры доступны в данной спецификации OpenSSL, используйте команду:
openssl ciphers -v <cipher-suite-spec>
В GnuTLS доступные спецификации можно найти в man-странице gnutls-cli(1) (смотрите описание опции --priority).
В старых версиях библиотеки GnuTLS, где утилита gnutls-cli не поддерживала опции --priority, можно получить --- ограниченный --- список шифров командой:
gnutls-cli -l
При использовании библиотеки Mozilla NSS применяются спецификации наборов шифров OpenSSL, которые транслируются в формат, используемый внутри библиотеки Mozilla NSS. Не существует простого способа получить список наборов шифров из командной строки. Полный список можно найти в исходном коде Mozilla NSS, файл sslinfo.c, структура
static const SSLCipherSuiteInfo suiteInfo[]
При использовании библиотеки Mozilla NSS аргумент <path> может содержать путь к базе данных сертификатов/ключей Mozilla NSS. Если аргумент <path> содержит пути и к базе данных сертификатов/ключей Mozilla NSS, и к файлам сертификатов удостоверяющих центров, OpenLDAP будет использовать базу данных сертификатов/ключей, а файлы сертификатов удостоверяющих центров проигнорирует.
При использовании библиотеки Mozilla NSS и базы данных сертификатов/ключей (указанной в параметре TLSCACertificatePath), TLSCertificateFile определяет имя сертификата, который нужно использовать:
TLSCertificateFile Server-CertЕсли используется токен, отличный от встроенного внутреннего, сначала указывается имя этого токена, за которым следует двоеточие:
TLSCertificateFile my hardware device:Server-CertДля получения списка имён сертификатов используйте certutil -L:
certutil -d /path/to/certdbdir -L
При использовании библиотеки Mozilla NSS, TLSCertificateKeyFile указывает имя файла, содержащего пароль для ключа, соответствующего сертификату, указанному в параметре TLSCertificateFile. Для отключения парольной защиты базы данных сертификатов/ключей можно использовать команду modutil. Например, если в параметре TLSCACertificatePath в качестве расположения базы данных сертификатов/ключей указано /etc/openldap/certdb, то для смены пароля на пустую строку используйте:
modutil -dbdir /etc/openldap/certdb -changepw 'NSS Certificate DB'Вы должны знать предыдущий пароль, если он был установлен. Предупреждение о запуске браузера следует проигнорировать. На запрос нового пароля нажмите 'Enter'.
TLSProtocolMin 3.2
требуется использовать TLS 1.1. Если в качестве минимально допустимой указана та версия протокола, которая не поддерживается данной реализацией OpenLDAP, то в итоге будет требоваться та наибольшая версия протокола, которую OpenLDAP поддерживает. Библиотека GnuTLS игнорирует этот параметр.
Обратите внимание, что при использовании с сессией TLS механизма аутентификации SASL EXTERNAL требуется, чтобы у клиента был действующий сертификат. Поэтому для работы аутентификации SASL EXTERNAL установка TLSVerifyClient должна отличаться от настройки по умолчанию.
Операции LDAP, в том числе поиск по поддереву, по умолчанию получают доступ только к одной базе данных. Такое поведение можно изменить путём склеивания баз данных вместе с помощью ключевого слова subordinate. Списки контроля доступа и некоторые наложения могут также распространяться на несколько баз данных.
В настоящее время поддерживаются ограничения size (по размеру) и time (по времени).
Синтаксис для ограничений по времени - time[.{soft|hard}]=<integer>, где integer - это число секунд, которое будет затрачивать slapd при формировании ответа на поисковый запрос. Если клиент не запросил явно ограничение по времени, будет использовано ограничение soft; если запрошенное клиентом ограничение по времени превысило ограничение hard, вместо запрошенного будет использовано это ограничение. Если в качестве ограничения hard задано ключевое слово soft, ограничение soft будет использовано в любом случае; если в качестве ограничения hard задано ключевое слово unlimited, это означает, что ограничение hard не накладывается. Явно указанное при запросе ограничение по времени, меньшее или равное ограничению hard, будет удовлетворено. Если при задании ограничения не указывались квалификаторы, указанное значение присваивается ограничению soft, а в качестве ограничения hard устанавливается ключевое слово soft, таким образом сохраняется оригинальное поведение.
Синтаксис для ограничений по размеру - size[.{soft|hard|unchecked}]=<integer>, где integer - это максимальное число записей, которые slapd будет возвращать в ответ на поисковый запрос. Если клиент не запросил явно ограничение по размеру, будет использовано ограничение soft; если запрошенное клиентом ограничение по размеру превысило ограничение hard, вместо запрошенного будет использовано это ограничение. Если в качестве ограничения hard задано ключевое слово soft, ограничение soft будет использовано в любом случае; если в качестве ограничения hard задано ключевое слово unlimited, это означает, что ограничение hard не накладывается. Явно указанное при запросе ограничение по размеру, меньшее или равное ограничению hard, будет удовлетворено. Квалификатор unchecked устанавливает ограничение на число записей-кандидатов, которые будет разрешено проверить при подготовке ответа на поисковый запрос. Смысл данного ограничения в том, что обработка поисковых фильтров, затрагивающих атрибуты, которые не были корректно проиндексированы, может привести к тому, что slapd(8) должен будет проверить большое количество записей-кандидатов на предмет их соответствия этим поисковым фильтрам. Ограничение unchecked предоставляет возможность прекращать такие операции ещё до того, как они начали выполняться. Если количество отобранных записей-кандидатов превысит ограничение unchecked, поиск будет прерван и выдано сообщение Unwilling to perform. Если в качестве ограничения unchecked задано ключевое слово unlimited, данное ограничение не применяется (поведение по умолчанию). Если в качестве ограничения unchecked задано ключевое слово disabled, поиск вообще не выполняется; это может быть использовано для того, чтобы запретить определённому набору пользователей выполнять поисковые запросы. Если при задании ограничения не указывались квалификаторы, указанное значение присваивается ограничению soft, а в качестве ограничения hard устанавливается ключевое слово soft, таким образом, сохраняется оригинальное поведение.
В случае, если совпадение с условиями данной директивы не найдено, применяются глобальные ограничения. Значения по умолчанию соответствуют значениям директив sizelimit и timelimit; для unchecked ограничения не назначаются.
Если в запросе был указан элемент управления pagedResults, по умолчанию используется ограничение по размеру hard, поскольку при запросе конкретного размера страницы подразумевается явное указание количества записей, которые требуется вернуть. Однако, ограничение по размеру применяется к общему количеству записей, возвращаемых на поисковый запрос, а не к одной странице. Можно определить дополнительные ограничения по размеру с использованием синтаксиса size.pr={<integer>|noEstimate|unlimited}, где integer - это максимальный размер страницы, если не было задано явного ограничения. Ключевое слово noEstimate запрещает серверу выдавать расчётное общее число записей, которые могут быть возвращены (примечание: текущая реализация не выдаёт каких-либо расчётных данных). Ключевое слово unlimited показывает, что на размер страницы элемента управления pagedResults ограничений не налагается. Синтаксис size.prtotal={<integer>|unlimited|disabled} позволяет задать ограничение на общее число записей, которые вернёт запрос с элементом управления pagedResults. По умолчанию значение этого ограничения равно значению ограничения hard. Если оно задаётся явно, то integer - это максимальное число записей, которое может вернуть операция поиска с элементом управления pagedResults в целом. Использование ключевого слова unlimited позволяет снять ограничение на количество возвращаемых записей, то есть позволяет использовать элемент управления pagedResults как способ обойти ограничения по размеру, накладываемые на обычный поиск. Ключевое слово disabled отключает возможность использования данного элемента управления, то есть невозможно будет вернуть постраничные результаты. Имейте ввиду, что общее число записей, возвращаемых при использовании в запросе элемента управления pagedResults, не может превышать количества, установленного ограничением по размеру hard, накладываемым на обычный поиск, если только это количество не будет расширено в ограничении prtotal.
Параметр limits обычно используется для того, чтобы разрешить возврат неограниченного количества записей в ответ на поисковый запрос, выполняемый от имени идентификационной сущности, используемой потребителем репликации, которая производится средствами описанного в RFC 4533 протокола синхронизации содержимого LDAP (подробнее смотрите в описании параметра syncrepl).
Если суффикс одной базы данных находится "внутри" суффикса другой, определение базы данных с внутренним суффиксом должно быть раньше в конфигурационном файле. Для склеивания таких баз данных вместе можно использовать параметр subordinate.
Если был указан опциональный флаг advertise, контекст именования этой базы данных объявляется в корневой DSE. По умолчанию контекст этой базы является скрытым, а видимым является только вышестоящий контекст.
Если утилиты slapcat(8), slapadd(8) или slapindex(8) используются с вышестоящей базой данных, также будут задействованы и все связанные нижестоящие базы данных, поддерживающие эти утилиты.
Обычно имеет смысл конфигурировать у склеиваемых баз данных одинаковые индексы (если они поддерживают индексирование), даже для тех атрибутов, которые существуют только в некоторых из этих баз данных. В общем случае, следует настраивать склеиваемые базы данных настолько идентично, насколько это возможно, чтобы они могли выступать как единый каталог.
Имейте ввиду, что функциональность subordinate внутренне реализована через наложение glue, и это наложение будет взаимодействовать с другими используемыми наложениями. По умолчанию наложение glue автоматически конфигурируется как последнее наложение соответствующей базы данных. Его позиция в настройках базы данных может быть сконфигурирована явно путём указания директивы overlay glue в нужном месте. Явное указание требуется, например, при использовании наложения syncprov, которое должно следовать за glue, чтобы работать со всеми склеиваемыми базами данных:
database bdb suffix dc=example,dc=com ... overlay glue overlay syncprov
Значение аргумента rid идентифицирует текущую директиву syncrepl в настройках сервера-потребителя репликации. Это неотрицательное целое число, не превышающее 999 (ограничено тремя десятичными цифрами).
В значении аргумента provider указывается сервер-поставщик репликации, на котором находится главная база данных, в виде LDAP URI. Если значение <port> не задано, используются стандартные номера портов LDAP (389 или 636).
Содержимое реплики syncrepl представляет собой данные, полученные в результате операции поиска Search, и потому определяется с использованием спецификации этой операции. slapd-потребитель будет посылать поисковые запросы slapd-поставщику в соответствии с данной спецификацией поиска, включающей в себя, как и во всех нормальных спецификациях поиска, параметры searchbase, scope, filter, attrs, attrsonly, sizelimit и timelimit. Значение по умолчанию для scope - sub, для filter - (objectclass=*), а для searchbase нет значения по умолчанию. Значение по умолчанию для списка атрибутов attrs - "*,+", чтобы были возвращены все пользовательские и операционные атрибуты, attrsonly по умолчанию не установлен. В параметре exattrs (по умолчанию не установлен) можно указать атрибуты, которые должны быть исключены из возвращаемых записей. Параметры sizelimit и timelimit в качестве значений принимают только ключевое слово "unlimited" и положительное целое число, значение по умолчанию для обоих - "unlimited". Эти параметры определяют запрашиваемые поставщиком ограничения на количество записей, возвращаемых операцией синхронизации содержимого
У протокола синхронизации содержимого LDAP два типа операций. При типе операции refreshOnly следующая поисковая операция синхронизации периодически переносится на временной интервал (задаваемый аргументом interval, по умолчанию 1 день) после окончания каждой операции синхронизации. При типе операции refreshAndPersist поисковая операция синхронизации остаётся действующей (не завершается) на slapd поставщика. Дальнейшие обновления в главной базе данных будут генерировать сообщения searchResultEntry для slapd потребителя как ответы на выполняющийся запрос поисковой операции синхронизации. Если первоначальный поиск завершился неудачно из-за ошибки, следующая поисковая операция синхронизации будет запланирована через некоторый промежуток времени (задаваемый аргументом interval; по умолчанию - 1 день).
Если во время репликации произошла ошибка, потребитель будет пытаться выполнить повторное соединение в соответствии со значением аргумента retry, который представляет собой список из пар <retry interval> и <# of retries>. Например, retry="60 10 300 3" позволяет потребителю выполнять повторные попытки подключения через каждые 60 секунд первые 10 раз, а затем через каждые 300 секунд ещё три раза, прежде чем прекратить попытки. Если в значении <# of retries> вместо числа стоит знак `+', это означает неопределённое количество попыток, пока повторное подключение не будет успешно установлено. Если аргумент retry не задан, по умолчанию syncrepl будет выполнять повторные попытки подключения бесконечно с итервалом в один час.
На потребителе репликации LDAP Sync можно осуществлять проверку схемы данных, для этого аргументу schemachecking нужно задать значение on. Значение по умолчанию - off. Установка параметра проверки схемы данных в on означает, что реплицируемые записи должны иметь структурный объектный класс, удовлетворять требованиям объектных классов в части, касающейся обязательных/разрешённых атрибутов, а также иметь атрибуты именования и отличительные значения. В связи с этим, при использовании частичной репликации параметр проверки схемы данных следует устанавливать в off.
Аргумент network-timeout определяет, как долго потребитель будет ожидать установки сетевого соединения с поставщиком. Аргумент timeout определяет, как долго потребитель будет ожидать выполнения первоначального запроса Bind после установки сетевого соединения. Значения по умолчанию для этих аргументов берутся из ldap.conf(5).
Для bindmethod simple требуется задать аргументы binddn и credentials; использовать его следует только при наличии адекватных сервисов обеспечения безопасности (например, TLS или IPSEC). ПОМНИТЕ: удостоверяющие данные для простого подсоединения (аргумент credentials) должны указываться в открытом виде! Для bindmethod sasl требуется задать аргумент saslmech. В зависимости от используемого механизма можно указать аутентификационную идентификационную сущность и/или удостоверяющие данные в аргументах authcid и credentials. В аргументе authzid можно указать авторизационную идентификационную сущность. В аргументе secprops можно задать специфические параметры безопасности для подсоединения SASL (как в рассматриваемом выше параметре sasl-secprops). Отличный от значения по умолчанию SASL-realm можно задать в аргументе realm. Идентификационной сущности, используемой потребителем в целях синхронизации, следует разрешить получение неограниченного количества записей в ответ на поисковый запрос. На поставщике репликации, помимо того, чтобы разрешить идентификационной сущности syncrepl проходить аутентификацию, также следует предоставить этой идентификационной сущности соответствующие привилегии доступа к данным, которые будут реплицироваться (директива access), а также установить подходящие ограничения по времени и по размеру. Это может быть достигнуто путём установки в конфигурации поставщика либо параметров sizelimit и timelimit в unlimited, либо подходящих настроек параметра limits (подробнее смотрите в описании директив sizelimit и limits).
В аргументе keepalive задаются значения idle, probes и interval, используемые для проверки работоспособности сокета; значение idle - это количество секунд, которое будет простаивать соединение, прежде чем TCP начнёт посылать пробы проверки работоспособности; значение probes - это максимальное число проб, посылаемых TCP перед тем, как закрыть соединение; значение interval - это интервал в секундах между посылками отдельных проб проверки работоспособности. Эти значения разрешено задавать лишь в некоторых системах; в остальных системах аргумент keepalive будет проигнорирован, и будут использованы общесистемные установки.
Аргумент starttls указывает, что нужно использовать расширенную операцию StartTLS для установления сессии TLS до выполнения подсоединения (Bind) к поставщику. Если этот аргумент имеет значение critical, в случае неудачного завершения запроса StartTLS сессия будет прервана. Если этот аргумент имеет значение yes, в случае неудачного завершения запроса StartTLS сессия syncrepl будет продолжена без TLS. Аргумент tls_reqcert по умолчанию установлен в "demand", значения по умолчанию остальных параметров TLS sycnrepl аналогичны основным настройкам TLS slapd.
Аргумент suffixmassage позволяет потребителю получать записи из удалённого каталога, контекст именования которого отличается от контекста именования локального каталога. Составная часть DN записей из удалённого каталога, совпадающая с DN в аргументе searchbase, будет заменена значением DN из аргумента suffixmassage.
Чтобы не реплицировать записи целиком, потребитель может запросить сведения из журнала модификации данных. Такой режим работы называется delta syncrepl. Для его активации, кроме перечисленных выше аргументов, нужно указать параметры журнала, который будет использоваться, в аргументах logbase и logfilter. В аргументе syncdata нужно задать либо "accesslog", если журнал соответствует формату slapo-accesslog(5), либо "changelog", если он соответствует устаревшему формату changelog. Если аргумент syncdata не был указан, либо был указан со значением "default", то параметры работы с журналом игнорируются.
Короткий пример конфигурационного файла:
include /usr/local/etc/openldap/schema/core.schema pidfile /usr/local/var/run/slapd.pid # Подтипы от типа атрибута "name" (например, "cn" и "ou") # с опцией ";x-hidden" могут быть использованы в поиске/сравнении, # но не должны быть показаны при запросе. Смотрите slapd.access(5). attributeoptions x-hidden lang- access to attrs=name;x-hidden by * =cs # Защита паролей. Смотрите slapd.access(5). access to attrs=userPassword by * auth # Доступ на чтение к остальным атрибутам и записям. access to * by * read database bdb suffix "dc=our-domain,dc=com" # Директория для файлов базы данных ДОЛЖНА существовать до запуска slapd. # Доступ к ней должны иметь только slapd и его инструменты. # Рекомендуемый режим доступа - 0700. directory /usr/local/var/openldap-data # Обслуживаемые индексы index objectClass eq index cn,sn,mail pres,eq,approx,sub # Мы принимаем запросы от клиентов, не поддерживающих полную функциональность # и не обрабатывающих отсылки, поэтому выполняем удалённый поиск в их интересах database ldap suffix "" uri ldap://ldap.some-server.com/ lastmod off
Более полный пример конфигурационного файла с аннотациями приведён в "Руководстве администратора OpenLDAP". Ещё один пример - оригинальный файл /usr/local/etc/openldap/slapd.conf.
"Руководство администратора OpenLDAP" (http://www.OpenLDAP.org/doc/admin/, http://pro-ldap.ru/tr/admin24/).
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |