| |
![]() |
Иногда OpenLDAP подвергается критике за скудность сообщений об ошибках и слабую диагностику. Отчасти это связано с генеральной линией стандартизации сообщений об ошибках, ограничивающей возможности реализаций служб каталогов по выдаче более информативных и творческих сообщений (справедливости ради стоит отметить, что в стандартах предусмотрено наличие в сообщении текстового элемента для более точного освещения проблемы), отчасти с тем, что многие сообщения об ошибках выводятся через клиентские программы, которые могут делать серьёзные искажения исходных диагностических сообщений.
Лучший источник диагностической информации — журналы OpenLDAP необходимого уровня (безусловно, наиболее полный из которых loglevel -1).
Ниже мы приводим некоторые сведения о том, как правильно читать журналы OpenLDAP, а также стандартные сообщения об ошибках LDAP с некоторыми подсказками о том, в чём может заключаться причина ошибки.
Данные сообщения об ошибках определены в разделе 4.1.9 RFC 4511, черновом RFC LDAP C API (датированным 2000-м годом), а также выяснены путём изучения заголовочного файла LDAPResult.h дистрибутива OpenLDAP.
Название ошибки | Номер | Пояснения/причины |
LDAP_SUCCESS | 0 (x'00) | Успешное завершение запроса. |
LDAP_OPERATIONS_ERROR | 1 (x'01) | Произошла ошибка операции. |
LDAP_PROTOCOL_ERROR | 2 (x'02) | Обнаружено нарушение протокола. |
LDAP_TIMELIMIT_EXCEEDED | 3 (x'03) | Превышено ограничение по времени LDAP. |
LDAP_SIZELIMIT_EXCEEDED | 4 (x'04) | Превышено ограничение по размеру LDAP. |
LDAP_COMPARE_FALSE | 5 (x'05) | Операция сравнения вернула "ложь". |
LDAP_COMPARE_TRUE | 6 (x'06) | Операция сравнения вернула "истину". |
LDAP_STRONG_AUTH_NOT_SUPPORTED | 7 (x'07) | Сервер LDAP не поддерживает строгую аутентификацию. |
LDAP_STRONG_AUTH_REQUIRED | 8 (x'08) | Для данной операции требуется прохождение строгой аутентификации. |
LDAP_PARTIAL_RESULTS | 9 (x'09) | Возвращены только частичные результаты. |
LDAP_REFERRAL | 10 (x'0A) | Указывает, что в ответе присутствует отсылка LDAP. Данное сообщение будет содержать один или несколько LDAP URL, по которым клиент должен перенаправить последующие операции для получения данного DN. |
LDAP_ADMINLIMIT_EXCEEDED | 11 (x'0B) | Указывает на то, что какие-либо ограничения, установленные на стороне сервера на количество записей, возвращаемое при поиске, были превышены. |
LDAP_UNAVAILABLE_CRITICAL_EXTENSION | 12 (x'0C) | Указывает на то, что элемент управления или правило соответствия, запрашиваемые в операции, не поддерживаются данным сервером. |
LDAP_CONFIDENTIALITY_REQUIRED | 13 (x'0D) | Конфигурация данного сервера требует обеспечения какой-либо формы конфиденциальности (TLS/SSL или SASL) при выполнении подсоединения с предоставляемым DN, например, определённая на глобальном уровне или в разделе database директива security может требовать соблюдения некоторой формы SSF при выполнении simple_bind или операции обновления. |
LDAP_SASL_BIND_IN_PROGRESS | 14 (x'0E) | Данный сервер в настоящий момент выполняет SASL-подсоединение и в этом контексте запрашиваемая операция является неверной. |
15 (x'0F) | Не используется. | |
LDAP_NO_SUCH_ATTRIBUTE | 16 (x'10) | Указанный в запросе атрибут не присутствует в записи. |
LDAP_UNDEFINED_TYPE | 17 (x'11) | Указанный в запросе тип атрибута был неверным. |
LDAP_INAPPROPRIATE_MATCHING | 18 (x'12) | Указывает на то, что правило соответствия с расширяемым фильтром соответствия не поддерживается для указываемого типа атрибута. |
LDAP_CONSTRAINT_VIOLATION | 19 (x'13) | Указываемое в операции значение атрибута нарушает некоторые ограничения. Возможные причины: 1. Строка слишком большой длины. 2. Неверный тип — строка записывается в числовой атрибут. 3. Неправильное значение, например, атрибут может принимать только определённое значение, либо одно из набора значений. |
LDAP_TYPE_OR_VALUE_EXISTS | 20 (x'14) | Указываемый тип атрибута или значение атрибута уже присутствует в записи. Возможные причины: 1. При добавлении записи — один или несколько атрибутов в LDIF (или операции добавления/замены) для записи в точности совпадают (дублируются). |
LDAP_INVALID_SYNTAX | 21 (x'15) | Было указано неверное значение атрибута. |
22 - 31 | (x'16 - x'1F). Не используются. | |
LDAP_NO_SUCH_OBJECT | 32 (x'20) | Указанная запись не существует в каталоге (DIT). |
LDAP_ALIAS_PROBLEM | 33 (x'21) | Псевдоним в DIT указывает на несуществующую запись. |
LDAP_INVALID_DN_SYNTAX | 34 (x'22) | Был указан синтаксически неверный DN. Может также возникнуть, если Вы используете файл в формате LDIF (dn: cn=xxx и т.д.) с утилитой ldapdelete, которой требуется только указание простого DN. |
35 (x'23) | Зарезервировано и не используется в LDAPv3 (LDAPv2: LDAP_IS_LEAF — указанный объект является листовым, то есть у него нет дочерних объектов). | |
LDAP_ALIAS_DEREF_PROBLEM | 36 (x'24) | Возникла проблема при разыменовании псевдонима. Смотрите также описание ошибки 33. |
37 - 47 | (x'25 - x'2F). Не используются. | |
LDAP_INAPPROPRIATE_AUTH | 48 (x'30) | Была указана проверка подлинности, которую невозможно осуществить, например, была указана LDAP_AUTH_SIMPLE, а у записи нет атрибута userPassword. |
LDAP_INVALID_CREDENTIALS | 49 (x'31) | Были предоставлены неверные учётные данные, например, неправильный пароль. Дополнительный текст: unable to get TLS Client DN (невозможно получить DN клиента TLS). Возможные причины: 1. Не предоставлен сертификат клиента в случае, если директива TLSVerifyClient установлена в 'demand'. 2. Не предоставлен сертификат клиента в случае, если директива TLSVerifyClient установлена в 'never'. В этом случае данное сообщение об ошибке не является фатальным и обслуживание клиента продолжается. |
LDAP_INSUFFICIENT_ACCESS | 50 (x'32) | У данного пользователя недостаточно прав доступа на осуществление запрашиваемой операции. |
LDAP_BUSY | 51 (x'33) | Данный сервер (DSA) слишком занят, чтобы выполнить запрашиваемую операцию. |
LDAP_UNAVAILABLE | 52 (x'34) | DSA недоступен. Он может быть, например, остановлен, поставлен на паузу или находится в процессе инициализации. |
LDAP_UNWILLING_TO_PERFORM | 53 (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_DETECT | 54 (x'36) | Выявлено зацикливание. |
54 - 59 | (x'37 - x'3B). Не используются. | |
LDAP_SORT_CONTROL_MISSING | 60 (x'3C) | В стандартах не используется. Только для Sun LDAP Directory Server. Сервер не получил требуемый элемент управления сортировки на стороне сервера. |
LDAP_RANGE_INDEX_ERROR | 61 (x'3D) | В стандартах не используется. Только для Sun LDAP Directory Server. Результаты запроса превысили диапазон, указанный в запросе. |
62 - 63 | (x'3E - x'3F). Не используются. | |
LDAP_NAMING_VIOLATION | 64 (x'40) | Указывает на то, что данный запрос содержит нарушение именования в отношении текущего DIT. |
LDAP_OBJECT_CLASS_VIOLATION | 65 (x'41) | Произошло нарушение объектного класса при использовании текущего набора схемы данных, например, при добавлении записи был пропущен обязательный (must) атрибут. |
LDAP_NOT_ALLOWED_ON_NONLEAF | 66 (x'42) | Операция на нелистовой записи (то есть той, у которой есть дочерние записи) не разрешается. |
LDAP_NOT_ALLOWED_ON_RDN | 67 (x'43) | Операция над RDN, например, удаление атрибута, использующегося в качестве RDN в DN, не разрешается. |
LDAP_ALREADY_EXISTS | 68 (x'44) | Данная запись уже существует в этом DIT. |
LDAP_NO_OBJECT_CLASS_MODS | 69 (x'45) | Не разрешена модификация объектного класса. |
LDAP_RESULTS_TOO_LARGE | 70 (x'46) | Только C API (черновой RFC). Результаты слишком велики и не могут содержаться в данном сообщении. |
LDAP_AFFECTS_MULTIPLE_DSAS | 71 (x'47) | Указывает на то, что операцию необходимо выполнить на нескольких серверах (DSA), а это не разрешено. |
72 - 79 | (x'48 - x'4F). Не используются. | |
LDAP_OTHER | 80 (x'50) | Произошла неизвестная ошибка. Возможная причина: Попытка удаления атрибута (особенно в cn=config), удаление которого запрещено. Дополнительный текст: olcDbDirectory: value #0: invalid path: No such file or directory Возможная причина: перед инициализацией новой базы данных директория для её размещения должна существовать. |
LDAP_SERVER_DOWN | 81 (x'51) | Только C API (черновой RFC). Библиотека LDAP не может связаться с LDAP-сервером. |
LDAP_LOCAL_ERROR | 82 (x'52) | Только C API (черновой RFC). Произошла некоторая локальная ошибка. Обычно это неудачная попытка выделения динамической памяти. |
LDAP_ENCODING_ERROR | 83 (x'53) | Только C API (черновой RFC). Произошла ошибка при кодировании параметров, отправляемых на LDAP-сервер. |
LDAP_DECODING_ERROR | 84 (x'54) | Только C API (черновой RFC). Произошла ошибка при декодировании результатов, полученных от LDAP-сервера. |
LDAP_TIMEOUT | 85 (x'55) | Только C API (черновой RFC). При ожидании результатов было превышено ограничение по времени. |
LDAP_AUTH_UNKNOWN | 86 (x'56) | Только C API (черновой RFC). В ldap_bind() был указан неизвестный метод аутентификации. |
LDAP_FILTER_ERROR | 87 (x'57) | Только C API (черновой RFC). Операции ldap_search() был предоставлен неправильный фильтр (например, количество открывающихся и закрывающихся скобок в фильтре не совпадает). |
LDAP_USER_CANCELLED | 88 (x'58) | Только C API (черновой RFC). Указывает на то, что пользователь прервал запрошенную операцию. |
LDAP_PARAM_ERROR | 89 (x'59) | Только C API (черновой RFC). Процедура ldap была вызвана с неверными параметрами. |
LDAP_NO_MEMORY | 90 (x'5A) | Только C API (черновой RFC). Выделение памяти (например, с помощью malloc(3) или другого механизма динамического выделения памяти) вызвало сбой в процедуре из библиотеки ldap. |
LDAP_CONNECT_ERROR | 91 (x'5B) | Только C API (черновой RFC). Библиотека/клиент не может соединиться с LDAP-сервером, указанным в URL. |
LDAP_NOT_SUPPORTED | 92 (x'5C) | Только C API (черновой RFC). Указывает на то, что в запросе используется функция, не поддерживаемая данным сервером. |
LDAP_CONTROL_NOT_FOUND | 93 (x'5D) | Только C API (черновой RFC). Запрашиваемый элемент управления не найден на данном сервере. |
LDAP_NO_RESULTS_RETURNED | 94 (x'5E) | Только C API (черновой RFC). Запрашиваемая операция завершилась успешно, но никаких результатов возвращено (получено) не было. |
LDAP_MORE_RESULTS_TO_RETURN | 95 (x'5F) | Только C API (черновой RFC). Запрашиваемая операция завершилась успешно, но должны быть возвращены дополнительные результаты, которые можно уместить в текущее сообщение. |
LDAP_CLIENT_LOOP | 96 (x'60) | Только C API (черновой RFC). Клиент выявил зацикливание, например, при следовании по отсылкам. |
LDAP_REFERRAL_LIMIT_EXCEEDED | 97 (x'61) | Только C API (черновой RFC). Сервер или клиент превысил какое-либо установленное ограничение при следовании по отсылкам. |
В данном разделе показаны журналы OpenLDAP с нашими пояснениями. Строки, начинающиеся с # — комментарии, добавленные в целях пояснения, в нормальных журналах (логах) их не будет.
Проблемы, комментарии, предположения, исправления (включая битые ссылки) или есть что добавить? Пожалуйста, выкроите время в потоке занятой жизни, чтобы написать нам, вебмастеру или в службу поддержки. Оставшийся день Вы проведёте с чувством удовлетворения.
Нашли ошибку в переводе? Сообщите переводчикам!
Copyright © 1994-2017 ZyTrax, Inc. Все права защищены. Последнее изменение страницы: 12 мая 2016 г.
Переведено участниками проекта Pro-LDAP.ru в 2012-2017 г.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |