Что такое код ldap_error


Содержание

Что такое код ldap_error

(PHP 3>= 3.0.12, PHP 4, PHP 5)

ldap_error — возвращает LDAP-сообщение об ошибке последней LDAP-команды.

Возвращает строковое сообщение об ошибке.

Эта функция возвращает строковое сообщение, объясняющее ошибку, сгенерированную последней LDAP-командой для данного link_identifier . Хотя LDAP errno-номера стандартизованы, разные библиотеки возвращают разные, и даже локализованные, текстовые сообщения об ошибках. Никогда не проверяйте текст сообщения, но всегда используйте для проверки error-номер.

ldap_error — Возвратить сообщение об ошибке LDAP последней команды

(PHP 4, PHP 5, PHP 7)

ldap_error — Возвратить сообщение об ошибке LDAP последней команды

Описание

Возвращает строковое сообщение об ошибке, объясняя ошибку, сгенерированную последней командой LDAP для данного идентификатора соединения link_identifier . В то время как LDAP errno числа стандартизированы, различные библиотеки возвращают отличающийся или даже локализованные текстовые сообщения об ошибках. Никогда не проверяйте на определенный текст сообщения об ошибке, всегда используйте кодами ошибок для проверки.

Если вы не снизите достаточно уровень предупреждений в php.ini , или префикс ваших LDAP-команд не будет с символом @ для подавления вывода предупреждений, генерируемые ошибки будут также отображаться в вашем HTML выводе.

Список параметров

Идентификатор ссылки LDAP, возвращенный ldap_connect() .

Возвращаемые значения

Возвращает сообщение ошибки в виде строки.

Смотрите также

  • ldap_err2str() — Преобразовать код ошибки LDAP в строковое сообщение об ошибке
  • ldap_errno() — Возвратить номер ошибки LDAP последней команды

Что SUB-код ошибки 568 означает для Ldap Ошибка 49 с Active Directory

я пишу некоторые Java-код, который выполняет аутентификацию в Active Directory с помощью SASL GSSAPI. В основном этот код работает нормально, но для одного пользователя, так я получаю ответ:

я знаю, что 49 значит, это ошибка проверки подлинности, и что соответствующие sub-код 568, но я только учитывать следующие значения для этих данных:

  • 525 — пользователь не найден
  • 52e — неправильные учетные данные
  • 530 — не разрешается вход в это время
  • 532 — истечения срока действия пароля
  • 533 — учетная запись отключена
  • 701 — счета истек
  • 773 — пользователь должен сменить пароль

до сих пор я не в состоянии найти авторитетный источник этих кодов ошибок в Microsoft (этот список собрана из постов на форуме) и я не могу найти ничего, что 568 ошибки.

кто-нибудь знает, что это значит?

РЕДАКТИРОВАТЬ: Это похоже на источник из этого списка идет от этой документации IBM

Что означает дополнительный код ошибки 568 для ошибки Ldap 49 с Active Directory

Я пишу код Java, который аутентифицируется в Active Directory с помощью SASL GSSAPI. В основном этот код работает нормально, но для одного пользователя я получаю ответ:

Я знаю, что 49 означает, что это ошибка аутентификации, и что соответствующий субкод 568, но мне известны только следующие значения для этих данных:

  • 525 — пользователь не найден
  • 52e — неверные учетные данные
  • 530 — не разрешено входить в данный момент
  • 532 — срок действия пароля истек
  • 533 — учетная запись отключена
  • 701 — срок действия аккаунта истек
  • 773 — пользователь должен сбросить пароль

До сих пор я не могу найти авторский источник этих кодов ошибок от Microsoft (этот список составлен из сообщений на форуме), и я не могу найти что-либо для этой ошибки 568.

Кто-нибудь знает, что это значит?

РЕДАКТИРОВАТЬ: похоже, что источник этого списка исходит из этой документации от IBM

1 ответ

Этот и этот список содержат коды ошибок, которые, кажется, соответствуют вышеуказанным номерам, а именно.

  • ERROR_NO_SUCH_USER 1317 (0x525) Указанная учетная запись не существует.
  • ERROR_LOGON_FAILURE 1326 (0x52E) Ошибка входа: неизвестное имя пользователя или неверный пароль.
  • ERROR_INVALID_LOGON_HOURS 1328 (0x530) Ошибка входа: нарушение ограничения времени входа в учетную запись.
  • ERROR_PASSWORD_EXPIRED 1330 (0x532) Ошибка входа: истек срок действия пароля указанной учетной записи.
  • ERROR_ACCOUNT_DISABLED 1331 (0x533) Ошибка входа: учетная запись в настоящее время отключена.
  • ERROR_ACCOUNT_EXPIRED 1793 (0x701) Срок действия учетной записи пользователя истек.
  • ERROR_PASSWORD_MUST_CHANGE 1907 (0x773) Пароль пользователя необходимо изменить перед первым входом в систему.

Из этого списка видно, что этот код ошибки означает:

ERROR_TOO_MANY_CONTEXT_IDS 1384 (0x568) Во время попытки входа в систему контекст безопасности пользователя накопил слишком много идентификаторов безопасности.

Оказывается, эта учетная запись имеет 2000 членства в группах, которые превышают внутренний предел Active Directory. Вы можете иметь только 1015 или около того членство в группах, иначе вход не удастся .

Что означает код ошибки 568 для Ldap Error 49 с Active Directory

Я пишу код Java, который аутентифицируется в Active Directory с использованием SASL GSSAPI. В основном этот код работает нормально, но для одного пользователя я получаю ответ:

Я знаю, что 49 означает, что это ошибка аутентификации и что соответствующий подкод — 568, но я знаю только следующие значения для этих данных:

  • 525 — пользователь не найден
  • 52e — недопустимые учетные данные
  • 530 — не разрешено войти в систему в настоящее время
  • 532 — срок действия пароля истек
  • 533 — отключена учетная запись
  • 701 — Истек срок действия учетной записи.
  • 773 — пользователь должен сбросить пароль

До сих пор я не могу найти официальный источник этих кодов ошибок от Microsoft (этот список собран из сообщений форума), и я ничего не могу найти для этой ошибки 568.

Кто-нибудь знает, что это значит?

EDIT: It looks like the source of this list comes from this documentation from IBM

Что дополнительный код ошибки 568 означает для Ldap Ошибки 49 с Active Directory

November 2020

2.6k раз

Я пишу некоторые Java-код, который проверяет подлинность в Active Directory с использованием SASL GSSAPI. В основном этот код работает отлично, но для одного пользователя Я получаю ответ:

Я знаю, что 49 означает, что это ошибка проверки подлинности, и что соответствующий суб-код 568, но я знаю только из следующих значений для этих данных:

  • 525 — пользователь не найден
  • 52е — недействительные учетные данные
  • 530 — не допускается для входа в это время
  • 532 — Срок действия пароля истек
  • 533 — счет инвалидов
  • 701 — счет истек
  • 773 — пользователь должен сбросить пароль

До сих пор я не может найти источник авторитетного этих кодов ошибок от Microsoft (этот список кусочков из сообщений форума) и я не могу найти что-нибудь для этого 568 ошибки.

Кто-нибудь знает, что это значит?

EDIT: Похоже , что источник этого списка исходит от этой документации от IBM

1 ответы

This and this list contain error codes that seem to correspond to the above numbers, viz.

  • ERROR_NO_SUCH_USER 1317 (0x525) The specified account does not exist.
  • ERROR_LOGON_FAILURE 1326 (0x52E) Logon failure: unknown user name or bad password.
  • ERROR_INVALID_LOGON_HOURS 1328 (0x530) Logon failure: account logon time restriction violation.
  • ERROR_PASSWORD_EXPIRED 1330 (0x532) Logon failure: the specified account password has expired.
  • ERROR_ACCOUNT_DISABLED 1331 (0x533) Logon failure: account currently disabled.
  • ERROR_ACCOUNT_EXPIRED 1793 (0x701) The user’s account has expired.
  • ERROR_PASSWORD_MUST_CHANGE 1907 (0x773) The user’s password must be changed before logging on the first time.

From this list it appears that this error code means:

ERROR_TOO_MANY_CONTEXT_IDS 1384 (0x568) During a logon attempt, the user’s security context accumulated too many security IDs.

It turns out that this account has 2000 group memberships which are overrunning an internal Active Directory limit. You may only have 1015 or so group memberships otherwise login will fail.

C. Распространённые ошибки при использовании программного обеспечения OpenLDAP

В следующих подразделах предпринята попытка обобщить наиболее распространённые причины ошибок LDAP при использовании OpenLDAP.

Ошибка Can’t contact LDAP server обычно возвращается, когда к серверу LDAP невозможно подключиться. Такое может произойти по многим причинам:

  • Сервер LDAP не запущен; это можно проверить, запустив, например,

заменяя и именем хоста и портом, на котором сервер должен принимать запросы.

  • клиенту не сообщили, как соединиться с работающим сервером; при использовании инструментов командной строки OpenLDAP это достигается путём предоставления параметра -H, аргумент которого — корректный LDAP url, соответствующий интерфейсу, на котором сервер должен принимать запросы.

Ошибка no such object обычно возвращается, когда невозможно найти целевой DN операции. В этом подразделе описаны причины, общие для всех типов операций. Необходимо также искать частные причины для конкретных типов операций (указанных в сообщении об ошибке).

Наиболее распространённой причиной этой ошибки является то, что объекта с таким именем не существует. Прежде всего, проверьте наличие опечаток.

Также имейте в виду, что по умолчанию вновь созданный сервер каталогов не содержит объектов (за исключением нескольких системных записей). Таким образом, если Вы настроили новый сервер каталогов и получили такое сообщение, то это может попросту означать, что Вы еще не добавили объект, который пытаетесь найти.

Обычно такая ошибка возникает, когда при запросе не указан базовый DN поиска, а значение по умолчанию не было корректно настроено.

Если, например, в slapd.conf Вы определили суффикс

то Вам нужно использовать параметр -b

чтобы указать утилите, где начинать поиск.

Параметр -b должен быть указан для всех команд LDAP, если Вы не настроили значение по умолчанию в ldap.conf (5).

Подробнее об этом смотрите в ldapsearch (1), ldapmodify (1).

Кроме того, slapadd (8) и её вспомогательные команды очень строго относятся к синтаксису файла LDIF.

Если в файле LDIF допущены некоторые вольности, то в результате его обработки может создаться видимость успешного создания базы данных, однако доступ к некотором частям этой базы может быть затруднён.

Одна из известнейших распространённых ошибок при создании базы данных — помещение пустой строки перед первой записью в файле LDIF. В начале файла LDIF не должно быть пустых строк.

При добавлении новых записей в каталог в общем случае рекомендуется использовать ldapadd (1) вместо slapadd (8). slapadd (8) нужно использовать для загрузки большого количества записей достоверно правильного формата.

Другой причиной появления этого сообщения может быть запись referral (смотрите Построение распределённой службы каталогов), ссылающаяся на незаполненный каталог.

В таком случае либо удалите эту запись referral, либо добавьте одну запись с базовым DN, на который ссылается referral, в пустой каталог.

Также данная ошибка может возникнуть, если slapd не может получить доступ к своим базам данных из-за проблем с правами на файлы. Например, в системе Red Hat Linux slapd запускается от имени пользователя ‘ldap’. Если при создании базы данных с нуля slapadd был запущен от root, файлы в директории /var/lib/ldap будет созданы с владельцем и группой root и правами 600, делая тем самым содержимое каталога недоступным для сервера slapd.

Причиной этого является строка

в slapd.conf . В оригинальном файле данная строка помещена как пример использования объектов referrals. Однако, если Ваша машина не подключена к Internet постоянно, она не сможет найти этот сервер, и, как следствие, выводит данное сообщение об ошибке.

Чтобы решить эту проблему, просто поместите # в начало данной строки и перезапустите slapd, либо направьте его на доступный сервер LDAP.

Смотрите также ldapadd (1), ldapmodify (1) и slapd.conf (5)

slapd вернёт ошибку unwilling to perform, если механизм манипуляции данными, содержащий целевую запись, не поддерживает запрошенную операцию.

Механизм манипуляции данными password может выполнять только поиски. Он будет возвращать ошибку unwilling to perform для всех остальных операций.

Механизм манипуляции данными shell является настраиваемым и может поддерживать ограниченное подмножество операций. Проверьте также другие ошибки, свидетельствующие о нехватке ресурсов, необходимых для сервера каталогов, например, у Вас может быть переполнен диск и т.п.

Эта ошибка возникает, когда сервер запрещает операцию из-за недостаточных прав доступа. Обычно это происходит из-за подключения от имени DN, не обладающего достаточными привилегиями для выполнения операции (либо анонимного подключения).

Для получения полного доступа Вы можете подсоединиться от имени rootdn/rootpw, указанных в slapd.conf (5). В противном случае, Вы должны выполнять подключение от имени записи, которой предоставлены соответствующие права при настройке контроля доступа.

Целевой (или другой) DN операции является неверным. Это означает, что либо строковое представление DN не соответствует требуемой форме, один из типов в утверждениях значений атрибута не определён, либо одно из значений в утверждениях значений атрибута не соответствует требуемому синтаксису.

Обычно эта ошибка возникает, когда клиент переходит по ссылке на сервер, который в свою очередь возвращает ему ссылку обратно на тот сервер, с которым он уже связывался. Этот сервер вновь отвечает также, как и в прошлый раз, и клиент зацикливается. Зацикливание обнаруживается, когда превышается лимит переходов.

Чаще всего причиной этого является неправильная настройка ссылки по умолчанию сервера. Ссылка по умолчанию не должна указывать на сам сервер, то есть на сервере ldap://myldap/ ссылка по умолчанию не должна указывать на ldap://myldap/ (или любое имя хоста/ip-адрес, эквивалентный myldap).

В некоторых версиях slapd (8), ошибка operationsError выдавалась вместо других.

В результате выполнения операции был возвращен нестандартный код неудачного завершения, свидетельствующий о внутренней ошибке. Возможно, проблему прояснит дополнительная информация, предоставляемая с кодом возврата, однако, скорее всего, придётся просматривать файлы журнала сервера.

Сообщение об этой ошибке поступает, когда значение атрибута не соответствует ограничениям синтаксиса. Обычно в сопутствующей дополнительной информации даётся указание, какое значение и какого именно атрибута определено как неверное. Дважды проверьте это значение и другие значения, поскольку сервер выдаёт сообщение только о первой найденной им ошибке.

Типичные причины возникновения:

  • посторонние пробелы (особенно конечные пробелы);
  • символы в неправильной кодировке (LDAPv3 использует кодировку Unicode UTF-8);
  • пустые значения (лишь немногие синтаксисы позволяют оставлять значения пустыми).

Для некоторых синтаксисов, таких как OBJECT IDENTIFIER (OID), данная ошибка свидетельствует о том, что предоставленный дескриптор («короткое название») OID не распознан. Например, данная ошибка возвращается, если предоставленное значение objectClass не распознано.

Данная ошибка возвращается, когда добавляемая или изменяемая запись нарушает правила схемы объектного класса. Обычно в сопутствующей дополнительной информации данное нарушение детализируется. Ниже приведены некоторые информационные сообщения и описание причин их появления.

Нарушения, связанные с атрибутами записей:

Предоставленный атрибут не разрешён объектным классом (классами) записи.

Атрибут, обязательный для объектного класса (классов) записи, не был предоставлен.

Нарушения, связанные с классом (классами) записи:

В записи не указано, к какому объектному классу она принадлежит.

Одно (или несколько) из перечисленных значений атрибута objectClass не распознано.

Ни одно из перечисленных значений атрибута objectClass не является структурным объектным классом.

Два или более структурных объектных класса в значениях атрибута objectClass не принадлежат одной и той же цепочке структурного объектного класса.

Попытка изменить структурный объектный класс записи в ходе операции модификации.

Абстрактный класс не подчиняется ни одному из перечисленных структурных или вспомогательных классов.

Другая проблема со структурным объектным классом.

Данное сообщение обычно возвращается, когда теневой сервер предоставляет запись, не содержащую операционного атрибута structuralObjectClass.

Имейте в виду, что приведённые выше сообщения об ошибке и их описания предполагают наличие базовых знаний о схемах LDAP/X.500.

Ошибка «ldap_add: No such object» обычно возвращается, когда не существует родительской записи для той записи, которую хотят добавить. Сначала добавьте родительскую запись.

Например, если при добавлении «cn=bob,dc=domain,dc=com» Вы получаете:

похоже, что запись «dc=domain,dc=com» не существует. Проверьте, существует ли она, с помощью ldapsearch:

Если нет, добавьте её. Если нужна помощь, обратитесь к Руководству по быстрому развёртыванию и началу работы.

Примечание: если добавляемая запись совпадает с суффиксом базы данных, наличие родительской записи не требуется. Например, если Ваш суффикс — «dc=domain,dc=com», для добавления «dc=domain,dc=com» не требуется наличия «dc=com».

Также данная ошибка возникает, когда Вы пытаетесь добавить какую-либо запись, на хранение которой Ваш сервер не сконфигурирован.


Например, если суффикс Вашей базы данных — «dc=domain,dc=com» и Вы попытаетесь добавить «dc=domain2,dc=com», «dc=com», «dc=domain,dc=org», «o=domain,c=us», или какой либо другой DN в поддереве «dc=domain,dc=com» (не добавив предварительно саму эту запись), сервер вернёт ошибку «No such object» (либо отсылку).

slapd (8) обычно возвращает «no global superior knowledge» в качестве дополнительной информации, указывая, почему он вернул noSuchObject вместо отсылки. То есть в настройках сервера не было дано информации о глобальном вышестоящем сервере.

Данная ошибка относится к правилу о СТРУКТУРНЫХ объектных классах, которое утверждает, что объект может иметь только один СТРУКТУРНЫЙ класс, структурный класс данного объекта. Говорят, что объект принадлежит этому классу, нулю или более вспомогательным классам и их суперклассам.

Хотя все эти классы обычно перечислены в атрибуте objectClass записи, один из этих классов является структурным объектным классом записи. Таким образом, считается нормальным для атрибута objectClass иметь значения inetOrgPerson, organizationalPerson и person, поскольку они наследуются один от другого в форме одной цепочки суперкласса. То есть, inetOrgPerson наследуется от organizationPerson, который в свою очередь наследуется от person. С другой стороны, неверным будет перечислить в атрибуте objectClass сразу inetOrgPerson и account, поскольку inetOrgPerson и account не являются частью одной и той же цепочки суперкласса (если только вместе с ними не перечислен какой-то другой класс, являющийся подклассом от обоих).

Для решения этой проблемы необходимо определить, какой из классов будет лучше использовать в качестве структурного объектного класса для данной записи, добавить этот класс в атрибут objectClass (если он ещё не добавлен), и убрать из атрибута objectClass записи все остальные структурные классы, не являющиеся суперклассом для данного структурного объектного класса.

Какой объектный класс лучше использовать, зависит от конкретной ситуации. В общем случае, нужно проконсультироваться с документацией по тому приложению, которое использует данный объект из Вашего каталога. Скорее всего, это поможет сделать выбор.

ldapadd(1) может выдать ошибку:

если slapd(8) не может определить на основании содержимого атрибута objectClass, какой должен быть структурный объектный класс.

OpenLDAP slapd проверяет целостность атрибутов именования и отличительных значений в соответствии с RFC4512 (рус.) .

Атрибуты именования — это атрибуты тех типов, которые присутствуют в RDN записи; отличительные значения — это значения атрибутов именования, которые присутствуют в RDN записи, например, в записи

атрибуты именования — cn и mail, а отличительные значения — Someone и someone@example.com.

OpenLDAP slapd проверяет целостность когда:

  • добавляется запись;
  • изменяется запись, если при этом изменяются значения атрибутов именования;
  • переименовывается запись, если при этом изменяется RDN записи.

Возможные причины появления ошибки:

  • атрибуты именования не присутствуют в записи, например:

  • атрибуты именования присутствуют в записи, но те типы атрибутов, которыми они определены, помечены как:
    • коллективные;
    • операционные;
    • устаревшие.
  • атрибуты именования присутствуют в записи, а отличительные значения — нет, например:

  • атрибуты именования присутствуют в записи вместе с отличительными значениями, но атрибуты именования:
    • не имеют поля равенства (equality field), вследствие чего невозможно утверждать равенство;
    • не поддерживают правило соответствия (возможно, пока);
    • не удовлетворяют правилу соответствия.
  • предоставленные отличительные значения не соответствуют установленному для них синтаксису.
  • другие ошибки, возникающие в процессе проверки/нормализации/сравнения; даже если Вам не подошел ни один из описанных выше вариантов, ситуация может проясниться при просмотре файлов журнала.

В любом случае, убедитесь, что определение типа атрибута для атрибута именования содержит соответствующее поле EQUALITY; либо же поле EQUALITY содержит вышестоящий тип атрибута, если определение данного типа атрибута основано на вышестоящем типе (смотрите поле SUP). Подробности можно найти в RFC4512 (рус.) .

Если имя целевой записи указывает, что она должна быть размещена в поддереве, на обслуживание которого не настроена ни одна из баз данных сервера, и, при этом, у сервера нет сведений о глобальной вышестоящей части дерева, сервер покажет, что он не желает выполнять операцию и выдаст «no global superior knowledge» в качестве дополнительного текста.

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

В текущих версиях slapd(8) перед тем, как допустить клиентов к выполнению операции подключения, требуется, чтобы у них были права на аутентификацию к тем типам атрибутов, которые используются в целях аутентификации. Поскольку все операции подключения выполняются анонимно (независимо от предыдущих успешных подключений), пользователю anonymous должны быть предоставлены права доступа auth.

В приведённом ниже примере ACL предоставляются следующие права доступа:

  • анонимным пользователям:
    • права на прохождение аутентификации с использованием значений атрибута userPassword
  • аутентифицированным пользователям:
    • права на обновление (но не чтение) своих собственных значений атрибута userPassword
    • права на чтение любого объекта, за исключением значений атрибута userPassword

Весь остальной доступ запрещён.

Данная ошибка обычно возникает, когда предоставленные учётные данные (пароль) не совпадают с хранимыми в атрибуте userPassword той записи, от имени которой Вы пытаетесь подключиться.

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

Проверьте и то, и другое! Кроме двух вышеуказанных причин, проверьте также, не запрещён ли доступ к атрибутам userPassword в выбранной части каталога. Фактически, slapd всегда возвращает «Invalid credentials» в случае неудачной попытки подключения, независимо от причины неудачи, поскольку другие коды возврата могут помочь злоумышленнику выяснить, правильное ли имя пользователя он предоставляет.

Для отладки правил доступа, определённых в slapd.conf, добавьте уровень журналирования «ACL».

Данная ошибка обычно возникает, когда запрашиваемая клиентом версия LDAP не поддерживается сервером.

Сервер OpenLDAP 2.x по умолчанию принимает запросы на подсоединение только LDAP версии 3, но может быть настроен для приёма запросов на подсоединение LDAP версии 2.

Примечание: если клиент запрашивает 3-ю версию протокола, сервер OpenLDAP 2.x ожидает, что будет использоваться LDAPv3 [RFC4510], если же запрашивается 2-я версия протокола, сервер ожидает, что будет использоваться ограниченный вариант LDAPv3 (в основном, синтаксис и семантика LDAPv3 в PDU LDAPv2).

Данный вариант также иногда называется LDAPv2+. Он отличается от U-Mich варианта LDAP в ряде направлений.

Данное сообщение обычно возвращается, когда предпринята попытка изменения атрибута objectClass способом, несовместимым с информационной моделью LDAP/X.500. На практике, такая ошибка обычно возникает, когда кто-то пытается изменить структуру объекта с одного класса на другой, например, пытается поменять ‘яблоко’ на ‘грушу’ или ‘фрукт’ на ‘грушу’.

slapd(8) не допускает такие изменения в соответствии с ограничениями LDAP и X.500.

Если Вы хотели подсоединиться, используя DN и пароль, и получили ошибку из семейства ldap_sasl_interactive_bind_s, возможно, Вы просто забыли указать команде аргумент ‘-x’. По умолчанию используется SASL-аутентификация. Для выбора простой («simple») аутентификации требуется аргумент ‘-x’.

Данное сообщение указывает на то, что функция SASL-аутентификации LDAP не может прочитать Root DSE. Эта ошибка возникает, когда сервер не предоставляет root DSE. Такое может происходить из-за ограничений контроля доступа.

Данное сообщение указывает на то, что функция SASL-аутентификации LDAP может прочитать Root DSE, но эта запись не содержит атрибута supportedSASLMechanism.

В атрибуте supportedSASLmechanism перечисляются механизмы, доступные в настоящее время. Данный список может быть пустым, если ни один из поддерживаемых механизмов в данный момент не доступен. Например, EXTERNAL перечисляется, только если клиент установил свою идентичность с помощью аутентификации на более низком уровне (например, TLS).

Примечание: данный атрибут может быть невидим из-за ограничений контроля доступа

Примечание: подсоединение с использованием SASL применяется по умолчанию для всех инструментов OpenLDAP, таких как ldapsearch(1), ldapmodify(1). Чтобы принудительно использовать подсоединение «simple», воспользуйтесь аргументом «-x». Использование подсоединения «simple» не рекомендовано, если не предприняты адекватные меры по защите конфиденциальности (такие, как TLS/SSL, IPSEC).

Данное сообщение указывает, что ни один из поддерживаемых сервером механизмов аутентификации SASL не поддерживается клиентом, либо они слишком слабы, либо по иной причине не подходят для использования клиентом. Имейте в виду, что параметры безопасности по умолчанию запрещают использование определённых механизмов, таких как ANONYMOUS и PLAIN (без TLS).

Примечание: подсоединение с использованием SASL применяется по умолчанию для всех инструментов OpenLDAP, таких как ldapsearch(1), ldapmodify(1). Чтобы принудительно использовать подсоединение «simple», воспользуйтесь аргументом «-x». Использование подсоединения «simple» не рекомендовано, если не предприняты адекватные меры по защите конфиденциальности (такие, как TLS/SSL, IPSEC).

Возможная причина возникновения этой ошибки — отсутствие прямой и обратной записи DNS для сервера LDAP.

Данная ошибка возвращается, если при ответе на поисковый запрос LDAPv2 сервер возвращает сразу и результаты (ноль или более совпавших записей), и ссылки (отсылки на другие серверы). Смотрите также ldapsearch(1).

Если при операции обновления реплики на ней не существует записи, которую требуется обновить (updatedn), будет возвращена отсылка. Также это может произойти, если ACL требует корректировки.

ldapsearch(1) и другие инструменты возвращают

когда пользователь (с помощью аргументов командной строки и/или файла ldap.conf(5)) запрашивает второй раз запустить TLS (SSL). Например, когда указываются сразу и «-H ldaps://server.do.main» и «-ZZ».

Данная ошибка slapd обычно указывает на то, что клиент отправил сообщение, превысившее административное ограничение. Смотрите директивы конфигурации sockbuf_max_incoming и sockbuf_max_incoming_auth в slapd.conf(5).

Это сообщение не указывает на ненормальное поведение или ошибку. Оно просто означает, что ожидаемые данные еще не доступны из запрошенного ресурса, в запрошенном контексте, либо из запрошенного сетевого сокета. slapd(8) обработает данные, как только они станут доступны.

Это сообщение указывает на то, что операционная система не поддерживает одно из семейств адресов (протоколов), на поддержку которого настроен slapd(8). Чаще всего это происходит, когда slapd(8) настраивался на поддержку IPv6, а ядро операционной системы — нет. В таких случаях данное сообщение можно проигнорировать.

Это сообщение означает, что slapd был запущен не с правами root, и поэтому не может получить свой ключ Kerberos 5 из keytab, обычно файл /etc/krb5.keytab.

Файл keytab используется для хранения ключей, которые требуются сервисам и демонам, запускающимся во время загрузки. Очень важно хранить эти секретные сведения вне досягаемости злоумышленников.

Поэтому по умолчанию владельцем файла keytab является root, а для всех остальных чтение этого файла не разрешено. Не следует ослаблять эти ограничения на права. Вместо этого создайте другой файл keytab для slapd и убедитесь, что владельцем его является тот пользователь, с правами которого запускается slapd.

Чтобы это сделать, запустите kadmin и введите следующие команды:

Затем, перейдя в оболочку, сделайте:

Теперь нужно сообщить slapd (ну, на самом деле сообщить библиотеке gssapi Kerberos 5, вызываемой Cyrus SASL), где найти новый keytab. Сделайте это путём задания переменной окружения KRB5_KTNAME примерно так:

Задайте эту переменную окружения в скрипте запуска slapd (на Red Hat лучше задать её в более подходящем месте /etc/sysconfig/ldap).

Всё это работает, только если Вы используете MIT kerberos. Это не будет работать, к примеру, с Heimdal.

В Heimdal есть функция gsskrb5_register_acceptor_identity(), устанавливающая путь к файлу keytab, который Вы хотите использовать. В Cyrus SASL 2 для использования данной функции Вы можете добавить

в конфигурационный файл SASL Вашего приложения. Это работает только с Heimdal.

Появление сообщения «access from unknown denied» в файле журнала связано с TCP wrappers. Дополнительную информацию смотрите в hosts_access(5). Чтобы избавиться от этой ошибки, Вы можете, например, добавить строку «slapd: .hosts.you.want.to.allow» в /etc/hosts.allow.

Появление данного сообщения является нормальным. Это означает, что необходимые данные еще не доступны из запрошенного ресурса, либо из запрошенного сетевого сокета. slapd(8) обработает данные, как только они станут доступны.

Иногда `make test’ завершается неудачей на самых ранних тестах с невразумительным сообщением вроде такого:

Обычно, пять строк:

Waiting 5 seconds for slapd to start.

указывают на то, что slapd вообще не запустился.

В tests/testrun/slapd.1.log есть полный отчёт о том, что выдавал slapd во время попыток запуска. Уровень журналирования может быть повышен путём задания переменной окружения SLAPD_DEBUG в соответствующее значение; о том, что означают различные уровни журналирования, смотрите loglevel в slapd.conf(5).

Типичная причина такого поведения — проблема компоновки времени исполнения, то есть slapd не может найти некоторые динамические библиотеки, для работы с которыми он скомпонован. Попробуйте запустить ldd(1) на slapd (для тех архитектур, которые поддерживают компоновку времени исполнения).

Также могут быть и другие причины; содержимое файла журнала должно прояснить их.

Тесты, запускающие сразу несколько экземпляров slapd обычно помещают отчёты в tests/testrun/slapd. .log, с различным для каждого экземпляра slapd; такие тесты просматривают tests/testrun/ для назначения возможного значения .

Возможно, это связано с неправильной принадлежностью директории BDB (/var/lib/ldap) и файлов в ней. Эти файлы должны принадлежать пользователю, с правами которого запускается slapd.

устраняет данную ошибку в Debian.

При использовании SASL, когда клиент соединяется с сервером LDAP, сервис slapd немедленно аварийно завершает работу и клиент получает сообщение об ошибке:

Если проверить сервис slapd, он окажется остановленным.

Это может произойти из-за использования различных несовместимых между собой версий BerkeleyDB при установке SASL и установке OpenLDAP. Проблема возникает при использовании нескольких версий BerkeleyDB. Решение: проверьте, какая версия BerkeleyDB использовалась при установке Cyrus SASL.

Переустановите OpenLDAP с нужной версией BerkeleyDB.

LDAP. Настройка отказоустойчивого LDAP сервера

В этой статье я расскажу вам о сервере службы каталогов 389 Directory Server (он же Fedora Directory Server, он же Redhat Directory Server). Так уж повелось, что для доступа к серверу каталогов используется протокол LDAP. Если вы не работали с LDAP, я очень рекомендую ознакомиться со статьями в Wikipedia (тут про cлужбу каталогов, а тут про протокол LDAP).

Итак, сначала кратко о том, зачем же вообще использовать сервер службы каталогов (далее — LDAP-сервер). LDAP-сервера, в основном, применяются для централизованного хранения учетных записей, и всего, что с ними связано. LDAP-сервер представляет собой иерархическую БД, а значит в нем можно хранить любые данные.

Казалось бы, вполне логичен вопрос: а почему именно LDAP? Что мешает хранить учетные записи в MySQL или PostgreSQL? Ответ очевиден — ничего =)

Но над любой RDBMS служба каталогов обладает целым рядом преимуществ:

  • Это стандарт. Многие приложения поддерживают аутентификацию/авторизацию через LDAP;
  • Данные хранятся как иерархическое дерево, что позволяет делать эффективные операции поиска, выделив нужную часть дерева;
  • Число операций чтения в тысячи раз превышают число операций записи, в связи с этим появляется огромное число плюсов: нет необходимости применения транзакций и rollback’ов, репликация работает без проблем, которые присущи RDBMS;
  • Приложение должно видеть одну и ту же информацию на всех серверах службы каталогов, если сервер не хранит информацию, нужную клиентскому приложению, он может сам запросить ее у другого сервера или перенаправить само приложение к другому серверу;
  • Из-за описанных выше свойств службы каталогов, этот сервис отлично масштабируется горизонтально.

Выбор сервера службы каталогов пал на 389 Directory Server. История этого LDAP сервера тесно связана с компанией Netscape (если интересно, почитать историю можно тут).

Ключевые особенности этого LDAP-сервера:

  • Мультимастер репликация. На все сервера, участники MM-репликации, можно записывать данные одновременно, причем конфликты репликации разрешаются автоматически благодаря ведению changelog базы и системе автоматического разрешения конфликтов. MM-репликацию можно комбинировать с master-slave и каскадной репликацией, благодаря чему можно получить гибкий и масштабируемый сервис. Так же поддерживается частичная репликация, что крайне полезно, если мы не хотим, чтобы некоторые данные присутствовали на реплике;
  • Мощный механизм ACL. С помощью ACL можно указать кому, когда, на каком LDAP-сервере, с каким атрибутом и какое действие выполнять. ACL хранится вместе с данными как операционные атрибуты, благодаря этому для них, как и для других данных, работают операции репликации и резервного копирования.
  • Синхронизация с Microsoft Active Directory. Поддерживается двунаправленная синхронизация пользователей, групп и паролей (для синхронизации паролей из AD в 389-ds необходимо поставить специальный софт на каждый контроллер домена)
  • SSL/TLS. Простой поддержкой SSL/TLS сейчас никого не удивишь. 389-ds поддерживает аутентификацию/авторизацию на основании SSL-сертификатов. Так же есть возможность шифрования атрибутов при записи на диск. При ручном вводе ключа при запуске сервера это может защитить от утечки данных путем копирования файлов с БД.
  • Управление сервером через протокол LDAP. Сервер поддерживает конфигурацию путем изменения атрибутов в cn=config, большинство параметров применяются без перезагрузки сервера. Так же на сервере можно запускать резервное копирование/восстановление и другие task-и путем добавления новой записи в cn=tasks,cn=config.
  • Plugins. Весь функционал реализован в виде plugin-ов (MM-репликация, синхронизация с AD, ACL, и т.п.). Написать и добавить свой plugin довольно легко, т.к. имеется хорошая документация с примерами.

После обзора возможностей 389 Directory Server познакомимся поближе с его структурой.

Общая структура 389 Directory Server

389 DS состоит из нескольких компонентов.

  • Сам сервер каталогов. Это приложение ns-slapd, именно этот процесс принимает и обрабатывает запросы от клиента, производит репликацию, читает и записывает данные в базу, передает управление плагинам, и т.д.
  • Сервер администрирования (Administration Server). Он управляет сервером каталогов. Сервер предоставляет интерфейс управления через протокол HTTP(S), так же предоставляет веб-интерфейс для просмотра логов и статуса репликации. Физически это apache + модули для управления ns-slapd.
  • Консоль администрирования. Java-приложение, которое подключается к серверу администрирования и позволяет настраивать сервер каталогов через удобный интерфейс. Есть версия под windows и linux, под mac os работает через проброс X-сессии с linux-машины.

Сначала я хотел написать теоретическую и практическую части отдельно, но потом стало ясно, что первая часть стала бы слишком скучной, а вторая слишком сухой. Поэтому сразу за куском теории будет идти практическое применение.

Итак, задача. Необходимо настроить отказоустойчивый сервис службы каталогов. Для этого настроим два сервера, настроим multimaster-репликацию между ними и поднимем перемещающийся IP-адрес (pacemaker + openais).

Если один из серверов станет недоступен, другой возьмет на себя этот IP и сервис продолжит работу.

После восстановления сервера данные будут реплицированы на него и IP-адрес переключится обратно на LDAP00, или же, в зависимости от настройки кластера, останется на LDAP01.

На одном сервере может быть несколько изолированных инстансов ns-slapd со своими настройками, схемой, правилами репликации и т.д. Чтобы иметь возможность управлять этими инстансами из консоли управления на каждом сервере должен стоять сервер Administration Server (далее admin server). admin server сам нуждается в одном инстансе LDAP сервера, поскольку хранит там run-time конфигурацию. По умолчанию конфигурация admin server хранится вместе с пользовательскими данными, но я считаю это небезопасным, поэтому у нас будет два инстанса на каждом сервере: один будет содержать конфигурацию для admin server-а, а второй данные. В такой схеме в случае отказа одной из нод сохраняется не только работоспособность LDAP-сервиса, но и возможность управления им.

Для нашего сервиса службы каталогов мы используем два сервера ldap00 и ldap01. На каждом из них будут установлены два инстанса LDAP сервера, один для нужд admin server-ов, второй для наших данных.
План установки будет такой:

  1. Установка первого сервера на ldap00;
  2. Настройка репликации на ldap00;
  3. Установка и настройка ldap инстанса на ldap01;
  4. Установка admin server-а на ldap01;
  5. Установка и настройка ldap инстансов для хранения пользовательских данных.

Установка первого сервера на ldap00

Готовые rpm собраны в репозитории EPEL для Centos, RHEL и Fedora Core. Если у вас одна из этих систем — подключите репозиторий EPEL и выполните установку через yum.

Мы используем SLES, поэтому нам пришлось собирать все пакеты под эту систему в нашем OpenSUSE Build Service. Если у вас debian/ubuntu — прочтите этот документ.

Вместе с 389 DS идет набор perl скриптов, которые используются для установки инстансов сервера.

Вот некоторые из них:

  • setup-ds.pl — устанавливает инстанс LDAP-сервера, сервер создается не подключенным к admin server-у;
  • setup-ds-admin.pl — устанавливает admin server, при необходимости устанавливает инстанс LDAP-сервера для хранения своей конфигурации;
  • register-ds-admin.pl — подключает инстанс к admin server-у, при необходимости устанавливает admin server;
  • remove-ds.pl — удаляет инстанс;
  • remove-ds-admin.pl — удаляет admin server и все инстансы;
  • dsktune — выводит параметры системы, которые нужно изменить, чтобы добиться большей производительности.

Для начала запустим dsktune:

# dsktune
389 Directory Server system tuning analysis version 10-AUGUST-2007.

NOTICE: System is x86_64-unknown-linux2.6.27.42-0.1-xen (1 processor).

NOTICE: The net.ipv4.tcp_keepalive_time is set to 7200000 milliseconds
(120 minutes). This may cause temporary server congestion from lost
client connections.

WARNING: There are only 1024 file descriptors (hard limit) available, which
limit the number of simultaneous connections.

WARNING: There are only 1024 file descriptors (soft limit) available, which
limit the number of simultaneous connections.

Утилита написала о системных параметрах, которые нужно подкрутить. В моем случае это net.ipv4.tcp_keepalive_time и лимит открытых файлов.

tcp_keepalive_time — это время от последнего посланного пакета до первой посылки keepalive. При большом значении, если клиент «умер», соединение останется открытым долгое время (по умолчанию 120 минут). Установим это значение в 10 минут.


echo 600 > /proc/sys/net/ipv4/tcp_keepalive_time

Добавим в /etc/sysctl.conf:

для увеличения лимита открытых файлов добавляем в /etc/security/limits.conf:

запускаем еще раз dsktune и убедимся, что у нас все готово для установки.

Теперь запускаем скрипт setup-ds-admin.pl
Нас спросят, хотим ли мы установить 389 Directory и Administration Server, согласны ли мы с лицензией, еще раз запустят dsktune и, наконец, появится меню выбора типа установки.

1. Express
Allows you to quickly set up the servers using the most
common options and pre-defined defaults. Useful for quick
evaluation of the products.

2. Typical
Allows you to specify common defaults and options.

3. Custom
Allows you to specify more advanced options. This is
recommended for experienced server administrators only.

To accept the default shown in brackets, press the Enter key.

Choose a setup type [2]:

Выбираем третий пункт (мы же experienced server administrators =) )

Далее будет предложено указать FQDN и имя/группу, от которого(ой) будет запускаться LDAP-сервер.

If you do not yet have a configuration directory server, enter ‘No’ to
be prompted to set up one.

Do you want to register this software with an existing
configuration directory server? [no]:

Тут нас спрашивают, хотим ли мы использовать существующий сервер каталогов для сохранения информации о сервере. Так как это наш первый сервер, отвечаем No.

Далее идут вопросы об admin server-е: administrator ID, пароль, Administration Domain, ответы на них оставляем по умолчанию (кроме пароля).

Затем надо будет указать, какой порт будет слушать LDAP-сервер. Мы договорились, что это инстанс, который хранит лишь конфигурацию для admin server-а, поэтому пересаживаем его на порт 6389. Далее указываем Directory server identifier. Назовем свой инстанс config-instance. На вопрос о суффиксе корневого дерева отвечаем по умолчанию, корневого дерева в этом инстансе не будет, так что его потом можно удалить.

Затем нас ждет вопрос о Directory Manager DN.

Directory Manager — это пользователь с правами root-а в LDAP-сервере. У каждого инстанса есть свой локальный Directory Manager.

Далее следуют вопросы о пароле к Directory Manager-у, хотим ли мы поставить примеры записей в наш root suffix и хотим ли мы заполнить наш новый инстанс какими-нибудь данными, спросят имя порта, IP-адрес и имя пользователя от которого admin server будет работать. После этого последний раз спросят подтверждение и начнут установку.

Настройка репликации на ldap00

Для подключения к серверу нужно поставить и запустить консоль управления 389-console.

В качестве Adminstration URL нужно ввести адрес admin server-а и порт который вы указали при установке.

Далее мы попадаем в панель управления серверами. У нас сейчас только один инстанс, выберем его.

Из консоли управления удаляем суффикс dc=edu,dc=scalaxy,dc=local

У нас остался всего один суффикс и база, в которой находятся конфигурационные данные для admin server-а.

Теперь немного теории о принципах репликации.

В репликации участвуют два типа серверов, supplier и consumer.

supplier — сервер, который копирует реплику на другой сервер.

обязанности supplier сервера:

  • отвечать на запросы клиентов на чтение и запись;
  • поддержание информации о состоянии изменений реплики;
  • инициализация репликации на consumer сервера.

supplier сервер должен быть всегда доступен, поскольку запись производится только на этом сервере, а потом реплицируется на другие севера.

Если связь с supplier сервером будет потеряна, то запись в каталог станет невозможна.

consumer — сервер, который сохраняет реплику с другого сервера. В случае с мультимастер репликацией, два сервера одновременно являются supplier-ом и consumer-ом.

consumer должен:

  • отвечать на read запросы клиентов;
  • пересылать запросы на обновления данных на сервер;
  • при получении запроса на добавление, удаление или обновления записи, запрос пересылается на supplier сервер.

Каждый supplier сервер имеет свой changelog, в котором хранится информация обо всех изменениях, которые произошли на реплике.

Supplier сервер повторяет эти изменения на каждом consumer сервере.

Теперь, когда мы немного подкованы теоретически, можно настраивать мультимастер репликацию инстанса с конфигурацией.

Ведение changelog-а изменений по умолчанию выключено, включается он во вкладке Replication. Changelog включается для всех баз одновременно.

Дальше включаем репликацию для базы NetscapeRoot. Необходимо указать Replica ID и Supplier DNs.

Supplier DN — это имя пользователя, которому разрешено выполнять репликацию на LDAP-сервере. Такого пользователя нужно создать на всех LDAP-серверах, которые участвуют в мультимастер репликации.

Быстрее всего это сделать через утилиту ldapmodify. Эта утилита позволяет модифицировать данные в LDAP в интерактивном режиме или брать команды из ldif файла.

ldapmodify -h 127.0.0.1 -p 6389 -x -D «cn=root» -W
Enter LDAP Password:
dn: cn=replication manager,cn=config
changetype: add
objectClass: inetorgperson
objectClass: person
objectClass: top
objectClass: organizationalPerson
cn: replication manager
sn: RM
userPassword:

Ответ должен быть
adding new entry «cn=replication manager,cn=config»

Итого, у нас получилось:

Сразу же создадим Replication Agreement для второго сервера. В контекстном меню для базы NetscapeRoot выбираем New Replication Agreement и заполняем аналогичным образом:

Нас предупредят, что подключение к серверу невозможно (так как его еще нет), доходим до последнего пункта, ставим Do not initialize consumer.

Установка и настройка ldap инстанса на ldap01

Теперь нужно настроить второй LDAP-сервер. С ним несколько иначе, т.к. установка admin server-а должна уже происходить в установленный LDAP-сервер и первичную настройку мы будем производить из консоли с помощью утилиты ldapmodify (что является нехилым плюсом, если стоит задача разобраться, как же работает этот сервер каталогов).

Сначала на втором сервере с помощью скрипта setup-ds.pl нужно создать инстанс, который не управляется admin server-ом.

Ответы на вопросы скрипта аналогичны предыдущим.

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

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

ldapmodify -h 127.0.0.1 -p 6389 -D «cn=root» -W

dn: cn=changelog5,cn=config
changetype: add
objectclass: top
objectclass: extensibleObject
cn: changelog5
nsslapd-changelogdir: /var/lib/dirsrv/slapd-ldap01/changelogdb

changelogdir должен указывать на директорию с названием вашего инстанса.

2) добавляем пользователя replication manager:

dn: cn=replication manager,cn=config
changetype: add
objectClass: inetorgperson
objectClass: person
objectClass: top
objectClass: organizationalPerson
cn: replication manager
sn: RM
userPassword:

20380119031407Z означает, что срок действия пароля не ограничен.

3) Создаем суффикс netscaperoot:

dn: cn=»o=netscaperoot»,cn=mapping tree,cn=config
changetype: add
objectclass: top
objectclass: extensibleObject
objectclass: nsMappingTree
nsslapd-state: backend
nsslapd-backend: NetscapeRoot
cn: «o=netscaperoot»

4) Создаем базу для суффикса netscaperoot:

dn: cn=NetscapeRoot,cn=ldbm database,cn=plugins,cn=config
changetype: add
objectclass: extensibleObject
objectclass: nsBackendInstance
nsslapd-suffix: o=netscaperoot

Кстати, 389 DS по умолчанию для хранения записей каталога использует модифицированную версию нереляционной базы данных Berkeley DB. Если есть желание, подробнее вы можете прочитать тут.

5) Создаем корневой o=NetScapeRoot:

dn: o=NetscapeRoot
changetype: add
objectClass: organization
objectClass: top
o: NetscapeRoot

6) Разрешаем репликацию для o=netscaperoot:

dn: cn=replica,cn=»o=netscaperoot», cn=mapping tree, cn=config
changetype: add
objectClass: nsDS5Replica
objectClass: top
nsDS5ReplicaId: 2
nsDS5ReplicaRoot: o=netscaperoot
cn: replica
nsDS5Flags: 1
nsDS5ReplicaBindDN: cn=replication manager,cn=config
nsds5ReplicaChangeCount: 0
nsds5ReplicaPurgeDelay: 604800
nsDS5ReplicaType: 3

Не забываем изменить nsDS5ReplicaId на номер вашего сервера (nsDS5ReplicaType — тип репликации, 3 — multimaster).

На данном этапе у нас уже есть настроенная репликация в одну сторону с ldap00 на ldap01.

Последним этапом будет:

7) Настройка репликации от ldap01 на ldap00:

dn: cn=Multimaster replication, cn=replica, cn=»o=netscaperoot», cn=mapping
tree, cn=config
changetype: add
objectClass: top
objectClass: nsDS5ReplicationAgreement
cn: Multimaster replication
description: replication for netscaperoot
nsDS5ReplicaBindDN: cn=replication manager,cn=config
nsDS5ReplicaBindMethod: SIMPLE
nsds5replicaChangesSentSinceStartup:
nsDS5ReplicaCredentials:

nsDS5ReplicaHost: ldap00.edu.scalaxy.local
nsDS5ReplicaPort: 6389
nsDS5ReplicaRoot: o=netscaperoot
nsDS5ReplicaTransportInfo: LDAP
nsds5replicaUpdateInProgress: FALSE

nsDS5ReplicaBindDN — имя пользователя, от имени которого будет производится репликация
nsDS5ReplicaCredentials — пароль

8) Первичная инициилизация репликации с ldap00 на ldap01:

На первом сервере выполняем эту команду:
dn: cn=Multimaster replication,cn=replica,cn=»o=netscaperoot»,cn=mapping tree,cn=config
changetype: modify
replace: nsds5beginreplicarefresh
nsds5beginreplicarefresh: start

Эта команда реплицирует данные с ldap00 на ldap01, эта операция обязательна, тк на втором сервер сейчас пустой o=netscaperoot.

Теперь мы имеем полностью реплицируемые каталоги с конфигурацией admin server-а.

Установка admin server-а на ldap01

Нужно поднять admin server на втором сервере. Запускаем скрипт register-ds-admin.pl

Когда нам предложат указать Configuration directory server URL, вводим LDAP URL второго сервера ldap://ldap01.edu.scalaxy.local:6389/o=NetscapeRoot

Дальнейшая настройка тривиальна, следуем указаниям скрипта.

Установка и настройка ldap инстансов для хранения пользовательских данных

Теперь подключаться через консоль управления можно к любому admin server-у.

На каждом из серверов в Server Group создаем новый инстанс LDAP server-а, это будет LDAP-server, в котором мы будем хранить наши данные.

Настраиваем мультимастер репликацию между двумя инстансами по тому же принципу (теперь вы можете настроить репликацию как через GUI, так и через консоль).

Поздравляю! Вы настроили отказоустойчивый сервис службы каталогов! Далее нужно настроить openais+pacemaker, чтобы исключить простои в работе сервиса.

Что такое код ldap_error

Добрый день всем.

Помогите решить проблему. Из=за повреждения загрузочного сектора один из дочерних DC был выключен на протяжении приблизительно недели. После его восстановления (ОС не переустанавливалась) появились ошибки репликации:

Раздел каталога: DC=nikolaev,DC=qqq,DC=COM,DC=UA

Этот сервер каталога давно не получал информацию о репликации от нескольких серверов каталогов. Здесь отображен счетчик серверов каталогов, разделенных следующими интервалами. Более 24 часов:

Более двух месяцев:

Дольше времени жизни захоронения:

Время жизни захоронения (дней):

На серверах каталогов, которые не производят своевременную репликацию, могут возникнуть ошибки. Они могут пропустить смену пароля и не сумеют пройти проверку подлинности. Контроллер домена, не успевший произвести репликацию за время жизни захоронения, может пропустить удаление некоторых объектов и будет автоматически исключен из последующих репликаций вплоть до выверки.

Для определения серверов каталогов по имени пользуйтесь программой dcdiag.exe. Также для отображения задержек репликации на серверах каталогов можно использовать средство поддержки repadmin.exe. Командный синтаксис выглядит как «repadmin /showvector /latency «.

на сервере nksrv.nikolaev.qqq.com.ua:

C:\Users\Администратор>repadmin /showvector /latency dc=nikolaev,dc=qqq,dc=com,dc=ua
Кэширование кодов GUID.
..
NIKOLAEV\NKSRV (retired) @ USN 1802354 @ Время 2011-05-19 09:31:55

NIKOLAEV\NKSRV @ USN 1929749 @ Время 2011-06-06 14:56:29

C:\Users\admin>repadmin /showvector /latency dc=nikolaev,dc=qqq,dc=com,dc=ua
Кэширование кодов GUID.

NIKOLAEV\NKSRV (retired) @ USN 1851860 @ Время 2011-05-16 17:58:15
NIKOLAEV\NKSRV @ USN 1844205 @ Время 2011-05-25 17:57:40
Default-First-Site-Name\LOTUS @ USN 3857754 @ Время 2011-06-06 14:58:41
.

Repadmin : выполнение команды / showrepl контроллере домена localhost с полным доступом

Параметры DSA: IS_GC

Параметры сайта: IS_GROUP_CACHING_ENABLED

DSA — GUID объекта: c86bf1bd-6aa6-4916-85db-53368f025468

DSA — код вызова: 76618a32-3a23-4b1d-9a3d-9fc3c00ba410

NIKOLAEV\NKSRV через RPC

DSA — GUID объекта: de2c1529-8114-4639-bf0d-1df5b9f071d3

Последняя попытка @ 2011-06-06 14:58:44 завершена с ошибкой, результат 5 (0x5):

Отказано в доступе.

79 последовательных ошибок.

Последний успех @ 2011-05-25 17:57:30.

Также появлялась ошибка:

Выполнение начальной настройки:

[nksrv.nikolaev. qqq .com.ua] Сбой привязки LDAP с ошибкой 1326,

Вход в систему не произведен: имя пользователя или пароль не опознаны..

Как устранить подобную ошибку? Куда смотреть?

Пробовала сбросить пароль с помощью netdom resetpwd но ничего из этого не получилось.

Домен работает в режиме Win2008R2

Заранее спасибо за любый подсказки по теме.

ldap_error

ldap_error — Возвратить сообщение об ошибке LDAP последней команды

Описание

Возвращает строковое сообщение об ошибке, объясняя ошибку, сгенерированную последней командой LDAP для данного идентификатора соединения link_identifier . В то время как LDAP errno числа стандартизированы, различные библиотеки возвращают отличающийся или даже локализованные текстовые сообщения об ошибках. Никогда не проверяйте на определенный текст сообщения об ошибке, всегда используйте кодами ошибок для проверки.

Если вы не снизите достаточно уровень предупреждений в php.ini , или префикс ваших LDAP-команд не будет с символом @ для подавления вывода предупреждений, генерируемые ошибки будут также отображаться в вашем HTML выводе.

Список параметров

Идентификатор ссылки LDAP, возвращенный ldap_connect() .

Возвращаемые значения

Возвращает сообщение ошибки в виде строки.

Смотрите также

  • ldap_err2str() — Преобразовать код ошибки LDAP в строковое сообщение об ошибке
  • ldap_errno() — Возвратить номер ошибки LDAP последней команды
Илон Маск рекомендует:  Как вконтакте сделать ссылку на человека
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL