Почему эта команда 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 для этой ошибки не дают никаких полезных предложений. Что я могу здесь делать не так?

hax0r_n_code
источник
Что произойдет, если у вас нет черты в вашем домене? Это может быть причиной этого ...
Натан 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.

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

larsks
источник
Спасибо! Если я скачал и установил последнюю версию, openldapпочему я не был бы настроен на использование slapd.d?
hax0r_n_code
Может быть, установщик по умолчанию использует устаревший файл конфигурации? В любом случае в документации есть инструкции по конвертации из slapd.confв slapd.d.
Жаворонки
Этот ответ был очень полезным временем. Мне пришлось добавить несколько необходимых схем, чтобы это работало на меня. Спасибо за ответ!
Сентил Кумар
1
Как вы узнали, что пропала nis.schema, а не какая-то другая схема? Как вы разобрали ошибку?
Майк Шульц
1
Ошибка жалуется на объектный класс для cn = инженеров, который является "posixGroup". Из этого относительно легко понять, в какой схеме определен объектный класс.
Жаворонки
1

Недавно я столкнулся с этой проблемой, следуя учебному пособию по Ubuntu OpenLDAP Server . Решил это, удалив все оставшиеся пробелы из моих строк.

jamzsabb
источник
1
Большое спасибо за это, я просто боролся с этой ошибкой!
ТайлерДурден
1

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

hansel1
источник