この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=configslapd.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 = engineersのオブジェクトクラス「posixGroup」について不平を言っています。これから、どのスキーマでオブジェクトクラスが定義されているかを比較的簡単に把握できます。
larsks


1

テキストエディターがエラーまたはバグによって目に見えない文字を挿入することがあり、これがldifファイルに影響するため、file.ldifopenldapで請求するものを削除します(例:)。それを削除して、別のステートメントを作成し、各ステートメントを1つずつアップロードして、コマンドで確認してください、さようなら、私はこれであなたを助けたいと思っています。data.ldifvildapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.