OpenLDAP実装では、アカウントのパスワードを設定できるのはルートユーザーのみ

OpenLDAP実装では、アカウントのパスワードを設定できるのはルートユーザーのみ

私は、高パフォーマンス処理のためにAWS ParallelClusterアセットの使用を必要とするアプリケーションに取り組んでいます。初期設定後、ユーザーアカウントを追加/削除できるようにする必要があります。これらの指示この目的のために、クラスター ヘッド上に単純な openLDAP ディレクトリ サービスを設定する方法について説明します。

これらの指示に従って、LDAP 非管理者アカウントを作成することができました。root としてログインすると、次のコマンドを使用してこのアカウントのパスワードを設定できます。

sudo ldappasswd -H ldap://localhost:389 -x -D "cn=ldapadmin,dc=<stack_name>,dc=internal" -W -S uid=<username>,ou=Users,dc=<stack_name>,dc=internal -y <path/to/file/with/LDAP/password>

この時点で、新しい LDAP 非管理者アカウントに切り替えることができます。残念ながら、このユーザーとしてログインしているときに passwd コマンドを実行すると、次のエラーが発生します。

password change failed: Insufficient access
passwd: Authentication token manipulation error

管理者以外のユーザーが自分のパスワードを変更できるように、openLDAP アプリケーションを構成するにはどうすればよいでしょうか?

答え1

リンク先の手順では、アクセス制御のない OpenLDAP データベースを作成するように指示されているようです。これは基本的に、olcRootDn の書き込みと * の読み取りを意味します。(すべての OpenLDAP ユーザーはデータベース内のすべてのデータを読み取ることができ、デフォルトの 500 の読み取り制限を回避する方法がわかれば、それをダンプすることもできます)。まずそれを調整する必要があります。

最小限の実行可能:

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword
  by self write
  by * auth
olcAccess: {1}to *
  by * read

関連情報