Чому ця команда ldapadd виходить із помилкою "Недійсний синтаксис"?


14

Я дуже новачок у 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

Відповіді:


11

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

Ця відповідь була дуже корисним часом. Мені довелося додати кілька необхідних схем, щоб вона працювала для мене. Дякую за відповідь!
Сентітіл Кумар

1
Звідки ви знали, що саме nis.schema відсутня, а не якась інша схема? Як ти розібрав помилку?
Майк Шульц

1
Помилка скаржиться на клас об'єктів для cn = інженерів, який є "posixGroup". З цього порівняно легко зрозуміти, у якій схемі визначений клас об'єктів.
larsks


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.