Глава 12. Ошибки и устранение неисправностей LDAP

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

Лучший источник диагностической информации — журналы OpenLDAP необходимого уровня (безусловно, наиболее полный из которых loglevel -1).

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

Стандартные сообщения об ошибках LDAP

Данные сообщения об ошибках определены в разделе 4.1.9 RFC 4511, черновом RFC LDAP C API (датированным 2000-м годом), а также выяснены путём изучения заголовочного файла LDAPResult.h дистрибутива OpenLDAP.

Название ошибкиНомерПояснения/причины
LDAP_SUCCESS0 (x'00)Успешное завершение запроса.
LDAP_OPERATIONS_ERROR1 (x'01)Произошла ошибка операции.
LDAP_PROTOCOL_ERROR2 (x'02)Обнаружено нарушение протокола.
LDAP_TIMELIMIT_EXCEEDED3 (x'03)Превышено ограничение по времени LDAP.
LDAP_SIZELIMIT_EXCEEDED4 (x'04)Превышено ограничение по размеру LDAP.
LDAP_COMPARE_FALSE5 (x'05)Операция сравнения вернула "ложь".
LDAP_COMPARE_TRUE6 (x'06)Операция сравнения вернула "истину".
LDAP_STRONG_AUTH_NOT_SUPPORTED7 (x'07)Сервер LDAP не поддерживает строгую аутентификацию.
LDAP_STRONG_AUTH_REQUIRED8 (x'08)Для данной операции требуется прохождение строгой аутентификации.
LDAP_PARTIAL_RESULTS9 (x'09)Возвращены только частичные результаты.
LDAP_REFERRAL10 (x'0A)Указывает, что в ответе присутствует отсылка LDAP. Данное сообщение будет содержать один или несколько LDAP URL, по которым клиент должен перенаправить последующие операции для получения данного DN.
LDAP_ADMINLIMIT_EXCEEDED11 (x'0B)Указывает на то, что какие-либо ограничения, установленные на стороне сервера на количество записей, возвращаемое при поиске, были превышены.
LDAP_UNAVAILABLE_CRITICAL_EXTENSION12 (x'0C)Указывает на то, что элемент управления или правило соответствия, запрашиваемые в операции, не поддерживаются данным сервером.
LDAP_CONFIDENTIALITY_REQUIRED13 (x'0D)Конфигурация данного сервера требует обеспечения какой-либо формы конфиденциальности (TLS/SSL или SASL) при выполнении подсоединения с предоставляемым DN, например, определённая на глобальном уровне или в разделе database директива security может требовать соблюдения некоторой формы SSF при выполнении simple_bind или операции обновления.
LDAP_SASL_BIND_IN_PROGRESS14 (x'0E)Данный сервер в настоящий момент выполняет SASL-подсоединение и в этом контексте запрашиваемая операция является неверной.
15 (x'0F)Не используется.
LDAP_NO_SUCH_ATTRIBUTE16 (x'10)Указанный в запросе атрибут не присутствует в записи.
LDAP_UNDEFINED_TYPE17 (x'11)Указанный в запросе тип атрибута был неверным.
LDAP_INAPPROPRIATE_MATCHING18 (x'12)Указывает на то, что правило соответствия с расширяемым фильтром соответствия не поддерживается для указываемого типа атрибута.
LDAP_CONSTRAINT_VIOLATION19 (x'13)Указываемое в операции значение атрибута нарушает некоторые ограничения.
Возможные причины:
1. Строка слишком большой длины.
2. Неверный тип — строка записывается в числовой атрибут.
3. Неправильное значение, например, атрибут может принимать только определённое значение, либо одно из набора значений.
LDAP_TYPE_OR_VALUE_EXISTS20 (x'14)Указываемый тип атрибута или значение атрибута уже присутствует в записи.
Возможные причины:
1. При добавлении записи — один или несколько атрибутов в LDIF (или операции добавления/замены) для записи в точности совпадают (дублируются).
LDAP_INVALID_SYNTAX21 (x'15)Было указано неверное значение атрибута.
22 - 31 (x'16 - x'1F). Не используются.
LDAP_NO_SUCH_OBJECT32 (x'20)Указанная запись не существует в каталоге (DIT).
LDAP_ALIAS_PROBLEM33 (x'21)Псевдоним в DIT указывает на несуществующую запись.
LDAP_INVALID_DN_SYNTAX34 (x'22)Был указан синтаксически неверный DN. Может также возникнуть, если Вы используете файл в формате LDIF (dn: cn=xxx и т.д.) с утилитой ldapdelete, которой требуется только указание простого DN.
35 (x'23)Зарезервировано и не используется в LDAPv3 (LDAPv2: LDAP_IS_LEAF — указанный объект является листовым, то есть у него нет дочерних объектов).
LDAP_ALIAS_DEREF_PROBLEM36 (x'24)Возникла проблема при разыменовании псевдонима. Смотрите также описание ошибки 33.
37 - 47(x'25 - x'2F). Не используются.
LDAP_INAPPROPRIATE_AUTH48 (x'30)Была указана проверка подлинности, которую невозможно осуществить, например, была указана LDAP_AUTH_SIMPLE, а у записи нет атрибута userPassword.
LDAP_INVALID_CREDENTIALS49 (x'31)Были предоставлены неверные учётные данные, например, неправильный пароль.
Дополнительный текст: unable to get TLS Client DN (невозможно получить DN клиента TLS).
Возможные причины:
1. Не предоставлен сертификат клиента в случае, если директива TLSVerifyClient установлена в 'demand'.
2. Не предоставлен сертификат клиента в случае, если директива TLSVerifyClient установлена в 'never'. В этом случае данное сообщение об ошибке не является фатальным и обслуживание клиента продолжается.
LDAP_INSUFFICIENT_ACCESS50 (x'32)У данного пользователя недостаточно прав доступа на осуществление запрашиваемой операции.
LDAP_BUSY51 (x'33)Данный сервер (DSA) слишком занят, чтобы выполнить запрашиваемую операцию.
LDAP_UNAVAILABLE52 (x'34)DSA недоступен. Он может быть, например, остановлен, поставлен на паузу или находится в процессе инициализации.
LDAP_UNWILLING_TO_PERFORM53 (x'35)Данный сервер (DSA) не желает выполнять запрашиваемую операцию.
Дополнительный текст: no global superior knowledge (нет сведений о глобальном вышестоящем каталоге) — имя записи, которую собираются добавить или модифицировать, не находится ни в одном из контекстов именования и у сервера нет правильной отсылки на вышестоящий каталог.
Возможная причина: не задан атрибут olcSuffix (директива suffix в slapd.conf) для DIT, на которое идёт ссылка.
Дополнительный текст: Shadow context; no update referral (теневой контекст (реплика); отсылки для выполнения обновлений не указано) — DIT, в которое собираются вносить изменения, является репликой в режиме "только для чтения", и, из-за отсутствия директивы updateref, невозможно возвратить отсылку.
Возможные причины:
1. Была попытка произвести запись в реплику "только для чтения" (в конфигурации syncrepl потребитель всегда в режиме "только для чтения").
2. В конфигурации syncrepl multi-master в файле slapd.conf возможно пропущена директива mirrormode true.
3. Если slapd при запуске использовал файл slapd.conf, а директория slapd.d (cn=config) также существует, то при последующих модификациях DIT могут возникать ошибки с выдачей этого сообщения. В частности, в FreeBSD требуется наличие явного указания в rc.conf (slapd_cn_config="YES") для принудительного использования slapd.d.
LDAP_LOOP_DETECT54 (x'36)Выявлено зацикливание.
54 - 59(x'37 - x'3B). Не используются.
LDAP_SORT_CONTROL_MISSING60 (x'3C)В стандартах не используется. Только для Sun LDAP Directory Server. Сервер не получил требуемый элемент управления сортировки на стороне сервера.
LDAP_RANGE_INDEX_ERROR61 (x'3D)В стандартах не используется. Только для Sun LDAP Directory Server. Результаты запроса превысили диапазон, указанный в запросе.
62 - 63(x'3E - x'3F). Не используются.
LDAP_NAMING_VIOLATION64 (x'40)Указывает на то, что данный запрос содержит нарушение именования в отношении текущего DIT.
LDAP_OBJECT_CLASS_VIOLATION65 (x'41)Произошло нарушение объектного класса при использовании текущего набора схемы данных, например, при добавлении записи был пропущен обязательный (must) атрибут.
LDAP_NOT_ALLOWED_ON_NONLEAF66 (x'42)Операция на нелистовой записи (то есть той, у которой есть дочерние записи) не разрешается.
LDAP_NOT_ALLOWED_ON_RDN67 (x'43)Операция над RDN, например, удаление атрибута, использующегося в качестве RDN в DN, не разрешается.
LDAP_ALREADY_EXISTS68 (x'44)Данная запись уже существует в этом DIT.
LDAP_NO_OBJECT_CLASS_MODS69 (x'45)Не разрешена модификация объектного класса.
LDAP_RESULTS_TOO_LARGE70 (x'46)Только C API (черновой RFC). Результаты слишком велики и не могут содержаться в данном сообщении.
LDAP_AFFECTS_MULTIPLE_DSAS71 (x'47)Указывает на то, что операцию необходимо выполнить на нескольких серверах (DSA), а это не разрешено.
72 - 79(x'48 - x'4F). Не используются.
LDAP_OTHER80 (x'50)Произошла неизвестная ошибка.
Возможная причина:
Попытка удаления атрибута (особенно в cn=config), удаление которого запрещено.
Дополнительный текст: olcDbDirectory: value #0: invalid path: No such file or directory
Возможная причина: перед инициализацией новой базы данных директория для её размещения должна существовать.
LDAP_SERVER_DOWN81 (x'51)Только C API (черновой RFC). Библиотека LDAP не может связаться с LDAP-сервером.
LDAP_LOCAL_ERROR82 (x'52)Только C API (черновой RFC). Произошла некоторая локальная ошибка. Обычно это неудачная попытка выделения динамической памяти.
LDAP_ENCODING_ERROR83 (x'53)Только C API (черновой RFC). Произошла ошибка при кодировании параметров, отправляемых на LDAP-сервер.
LDAP_DECODING_ERROR84 (x'54)Только C API (черновой RFC). Произошла ошибка при декодировании результатов, полученных от LDAP-сервера.
LDAP_TIMEOUT85 (x'55)Только C API (черновой RFC). При ожидании результатов было превышено ограничение по времени.
LDAP_AUTH_UNKNOWN86 (x'56)Только C API (черновой RFC). В ldap_bind() был указан неизвестный метод аутентификации.
LDAP_FILTER_ERROR87 (x'57)Только C API (черновой RFC). Операции ldap_search() был предоставлен неправильный фильтр (например, количество открывающихся и закрывающихся скобок в фильтре не совпадает).
LDAP_USER_CANCELLED88 (x'58)Только C API (черновой RFC). Указывает на то, что пользователь прервал запрошенную операцию.
LDAP_PARAM_ERROR89 (x'59)Только C API (черновой RFC). Процедура ldap была вызвана с неверными параметрами.
LDAP_NO_MEMORY90 (x'5A)Только C API (черновой RFC). Выделение памяти (например, с помощью malloc(3) или другого механизма динамического выделения памяти) вызвало сбой в процедуре из библиотеки ldap.
LDAP_CONNECT_ERROR91 (x'5B)Только C API (черновой RFC). Библиотека/клиент не может соединиться с LDAP-сервером, указанным в URL.
LDAP_NOT_SUPPORTED92 (x'5C)Только C API (черновой RFC). Указывает на то, что в запросе используется функция, не поддерживаемая данным сервером.
LDAP_CONTROL_NOT_FOUND93 (x'5D)Только C API (черновой RFC). Запрашиваемый элемент управления не найден на данном сервере.
LDAP_NO_RESULTS_RETURNED94 (x'5E)Только C API (черновой RFC). Запрашиваемая операция завершилась успешно, но никаких результатов возвращено (получено) не было.
LDAP_MORE_RESULTS_TO_RETURN95 (x'5F)Только C API (черновой RFC). Запрашиваемая операция завершилась успешно, но должны быть возвращены дополнительные результаты, которые можно уместить в текущее сообщение.
LDAP_CLIENT_LOOP96 (x'60)Только C API (черновой RFC). Клиент выявил зацикливание, например, при следовании по отсылкам.
LDAP_REFERRAL_LIMIT_EXCEEDED97 (x'61)Только C API (черновой RFC). Сервер или клиент превысил какое-либо установленное ограничение при следовании по отсылкам.

Наверх

Журналы OpenLDAP

В данном разделе показаны журналы OpenLDAP с нашими пояснениями. Строки, начинающиеся с # — комментарии, добавленные в целях пояснения, в нормальных журналах (логах) их не будет.

Наверх



Проблемы, комментарии, предположения, исправления (включая битые ссылки) или есть что добавить? Пожалуйста, выкроите время в потоке занятой жизни, чтобы написать нам, вебмастеру или в службу поддержки. Оставшийся день Вы проведёте с чувством удовлетворения.

Нашли ошибку в переводе? Сообщите переводчикам!

Copyright © 1994-2017 ZyTrax, Inc. Все права защищены. Последнее изменение страницы: 12 мая 2016 г.
Переведено участниками проекта Pro-LDAP.ru в 2012-2017 г.