web-dev-qa-db-ja.com

このldapaddコマンドが「無効な構文」エラーで終了するのはなぜですか?

私はopenldapに非常に慣れていませんが、linux/unix環境に精通しています。ガイド here を使用して、最初のテストopenldap環境をセットアップしようとしています。また、管理ガイドのほとんどを読みました here と認めざるを得ません。

したがって、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での結果は、有用な提案をネットしません。ここで何が悪いのでしょうか?

14
hax0r_n_code

あなたの問題は間違いなくあなたのLDAPサーバーにnisスキーマをロードする必要があることです。これを行う方法は、レガシーのslapd.conf構成ファイルを使用しているか、cn=configでホストされ、slapd.dディレクトリにバッキングされている新しい動的構成を使用しているかによって異なります。

slapd.confの使用

次の行に沿って行を追加して、slapd.confのスキーマ定義をincludeする必要があります。

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

これは、nis.schemaファイルがそのパスにあると想定しています。そうでない場合は、パスを適切に変更してください。

新しいスキーマをアクティブにするには、slapdを再起動する必要があります。

slapd.dの使用

(完全を期すためにこれを含めていますが、現在の構成には直接関係ありません)。

動的cn=config構成を使用している場合にスキーマをslapdにロードするには、ldapaddを使用します。 ACLの構成方法に応じて、コマンドは次のようになります。

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

これは、実行中のslapdに、rootへの「ピア資格情報」認証を許可するACLがあることを前提としています。それが機能しない場合は、-Dおよび-Wを使用して適切なバインドDNとパスワードを提供する必要があります。

この場合、再起動は必要ありません。

11
larsks

buntu OpenLDAP Serverチュートリアル をフォローしているときに、この問題に最近遭遇しました。行からすべての末尾の空白を削除することで解決しました。

1
jamzsabb

テキストエディターviがエラーやバグによって非表示の文字を挿入することがあり、これがldifファイルに影響を与えるため、openldapで充電するfile.ldifを削除することで修正します(例:data.ldif)。だからそれを削除して別のステートメントを作成し、各ステートメントを1つずつアップロードして、コマンドldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”、さようならで確認してみてください。

1
hansel1