別のサーバーからOpenLDAPデータベースをインポートしていますが、インポート中に一部のユーザーでエラーが発生しました。問題は、mozillaAbPersonAlpha
が有効なobjectClass
ではないことです。
#!ERROR [LDAP Error Code 21 - objectClass: value #3 invalid per syntax]
...
dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: [email protected]
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude
AFAICT OpenLDAPのインストールに mozillaABPersonAlpha のスキーマがないようです。
しかし、このスキーマをインストールするにはどうすればよいですか?
編集:サーバーは新しい構成バックエンドを使用しているため、slapd.conf
ファイル。代わりに、/etc/slapd.d/
奇妙なディレクトリ名の付いたディレクトリ(例:/etc/slapd.d/cn=config/
)。
この状況で新しいスキーマを追加するにはどうすればよいですか?
新しいslapd.d/dynamic/cn=config
バックエンドを使用しているときに問題を解決する方法を知りたくて、slapd.conf
メソッドに戻りたくなかったので、私は自分の質問に答えています。 (ほとんど誰もこれをしていません、AFAICT)
`ldapaddを使用して新しいスキーマを追加しようとすると、常に次のエラーが発生しました。
ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f mozillaabpersonalpha.ldif
ldap_add: Insufficient access (50)
したがって、私が使用していたBindDN
にはその特権がありません。 ACLを設定するか、その操作にrootDN
を使用する必要があります。
理由はわかりませんが、slapd
debianパッケージを構成するときに、自分のDITの管理者アカウントを作成できましたが、rootDN
については何も触れられていませんでした。ブラウジングした後、これを見つけました Blog は、cn=config
スキーマを使用しているときにrootDN
のパスワードを設定する方法を説明しています。
そのため、ファイル/etc/ldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif
を編集して、以下を追加しました:
olcRootDN: cn=admin,cn=config
olcRootPW: mypassword
変更を有効にするには、slapdを再起動する必要がありました(必要はありませんが...)。それをテストするために、次のコマンドを実行しました。
ldapwhoami -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword
そしてそれはうまくいった!次のステップは、mozillaAbPersonAlpha
を使用してldapadd
スキーマをldif形式でロードすることでした:
ldapadd -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword -f mozillaabpersonalpha.ldif
応答は成功しました
adding new entry "cn=mozillaabpersonalpha,cn=schema,cn=config"
最後に、mozillaABPersonAlpha
スキーマに依存する1人のユーザーを追加できるようになりました。たとえば、ファイルnewuser.ldif
には次のようになります。
dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: [email protected]
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude
そして、それを新しいディレクトリに追加する(rootDN
アカウントを使用しない)ことができるようになりました:
ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f usertest.ldif
Enter LDAP Password:
adding new entry "uid=somedude,cn=SomeGroup,cn=whatever,dc=test,dc=com