気まぐれSE日記

地方でエンジニアしてます

OpenLDAP でハマル

CentOS5にHDEコントローラを入れてLDAPサーバとして動かして居るんですが、
なぜかユーザのパスワードを変更しようとすると、エラーではじかれてしまう。

わかったことは、passwdファイルにあった既存ユーザをLDAPでインポートしたユーザのみパスワード変更に失敗し、新規でHDEコントローラから追加したユーザはパスワード変更ができた。


なんで??とldapのログを追ってみたところ、こんなエラーが

invalid structural object class chain (account/inetOrgPerson)

どういう意味かというと、オブジェクトクラス「account」と「inetOrgPerson」は共存できネエヨということだそうです。
OpenLDAP 2.2かららしいですね。


既存ユーザのアカウントをpasswdファイルからLDAPに移行する際にオブジェクトクラスをaccountでインポートしてたんですが、これがマズカッタらしい。とりあえず、「account」をやめて「inetOrgPerson」を使うように「LDAP Admin」ていうツールを使って一旦ldifにエクスポート→accountをinetOrgPersonに置換→sn:を追加*1→できあがったldifをインポートで無事HDEからパスワード変更できるように治りました。


↓この辺参考
OpenLDAP 補助クラスについて - BIGLOBEなんでも相談室
http://blog.hide-k.net/archives/2005/12/ldap.php

*1:ちなみにinetOrgPersonにすると、sn: という項目(uidと同じで良い?)のが必須になります。