web-dev-qa-db-ja.com

動的config = cnバックエンドを使用してDebian 5にOpenLDAPの新しいスキーマをインストールするにはどうすればよいですか?

別のサーバーから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/)。

この状況で新しいスキーマを追加するにはどうすればよいですか?

6
Noe Nieto

新しい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
7
Noe Nieto