Почему эта команда ldapadd завершает работу с ошибкой «Неверный синтаксис»?


15

Я очень новичок в openldap, но очень хорошо разбираюсь в среде linux / unix. Я пытаюсь настроить свою самую первую тестовую среду openldap, используя руководство здесь . Я также прочитал большую часть руководства администратора здесь, и я должен признать, что это очень важно.

Поэтому, следуя руководству по базовой настройке Ubuntu, я создал файл ldif, который выглядит следующим образом:

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=engineers,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: engineers
gidNumber: 5000

dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john

Всякий раз, когда я пытался добавить его, используя:

$ ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif

Я получаю следующую ошибку:

adding new entry "cn=engineers,ou=Groups,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

adding new entry "uid=john,ou=People,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

Результаты в Google для этой ошибки не дают никаких полезных предложений. Что я могу здесь делать не так?


Что произойдет, если у вас нет черты в вашем домене? Это может быть причиной этого ...
— Натан C

@NathanC попробует изменить это сейчас ...
— hax0r_n_code

@NathanC то же самое ... я думаю, что он не может найти posixGroup. Как я могу запросить доступные objectClassES?
— hax0r_n_code

@NathanC также у меня нет этого /etc/ldap/slapd.d/каталога. Я установил openldap из источника.
— hax0r_n_code

Я не достаточно знаком с openldap, чтобы ответить ... может быть, кто-то еще здесь.
— Натан C

Ответы:


12

Ваша проблема, несомненно, заключается в том, что вам необходимо загрузить nisсхему на сервер LDAP. Как это сделать, зависит от того, используете ли вы устаревший slapd.confфайл конфигурации или более новую динамическую конфигурацию, размещенную cn=configи поддерживаемую slapd.dкаталогом.

С помощью slapd.conf

Вам понадобится includeопределение схемы в вашем slapd.conf, добавив строку вдоль строк:

include /usr/local/etc/openldap/schema/nis.schema

Это предполагает, что nis.schemaфайл находится по этому пути; если нет, измените путь соответствующим образом.

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

С помощью slapd.d

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

Чтобы загрузить схему, slapdесли вы используете динамическую cn=configконфигурацию, вы должны использовать ldapadd. В зависимости от того, как настроены ваши ACL, команда может выглядеть так:

ldapadd -Y EXTERNAL -H ldapi:// -f /usr/local/etc/openldap/schema/nis.ldif

Это предполагает, что ваш запуск slapdимеет ACL, разрешающий аутентификацию «равноправных учетных данных» root. Если это не сработает, вам нужно будет предоставить соответствующий DN и пароль связывания, используя -Dи -W.

В этом случае перезагрузка не требуется.


Спасибо! Если я скачал и установил последнюю версию, openldapпочему я не был бы настроен на использование slapd.d?
— hax0r_n_code

Может быть, установщик по умолчанию использует устаревший файл конфигурации? В любом случае в документации есть инструкции по конвертации из slapd.confв slapd.d.
— Жаворонки

Этот ответ был очень полезным временем. Мне пришлось добавить несколько необходимых схем, чтобы это работало на меня. Спасибо за ответ!
— Сентил Кумар

1
Как вы узнали, что пропала nis.schema, а не какая-то другая схема? Как вы разобрали ошибку?
— Майк Шульц

1
Ошибка жалуется на объектный класс для cn = инженеров, который является "posixGroup". Из этого относительно легко понять, в какой схеме определен объектный класс.
— Жаворонки


1

Я исправляю это, удаляя то, file.ldifчто я хочу зарядить в openldap (например :), data.ldifпотому что текстовый редактор viиногда вставляет невидимый символ по ошибке или ошибке, и это влияет на ваш файл ldif. Поэтому удалите его, и вы создадите еще одно, и попытайтесь загрузить каждое утверждение по одному и проверить с помощью команды ldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”, до свидания, и я надеюсь помочь вам в этом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.