Назад | Перейти на главную страницу

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

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

Ваша проблема, несомненно, в том, что вам нужно загрузить 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.

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

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

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