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と同じで良い?)のが必須になります。