私は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での結果は、有用な提案をネットしません。ここで何が悪いのでしょうか?
あなたの問題は間違いなくあなたの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とパスワードを提供する必要があります。
この場合、再起動は必要ありません。
buntu OpenLDAP Serverチュートリアル をフォローしているときに、この問題に最近遭遇しました。行からすべての末尾の空白を削除することで解決しました。
テキストエディターvi
がエラーやバグによって非表示の文字を挿入することがあり、これがldifファイルに影響を与えるため、openldapで充電するfile.ldif
を削除することで修正します(例:data.ldif
)。だからそれを削除して別のステートメントを作成し、各ステートメントを1つずつアップロードして、コマンドldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”
、さようならで確認してみてください。