2017-08-03 10 views
0

私はUbuntu 14.04にldap 2.4.3をインストールしました。 pwdPolicyオーバーレイを設定しました。ユーザーが自分のパスワードを変更したとき、および管理者がパスワードを変更したときに機能します。問題は、管理者がパスワードを変更するときにポリシーが遵守されないということです。そこでusermanagementという別のアカウントを作成し、oclAccessにdnを追加しました。 userpassword以外のusermanagementアカウントを使用して試したすべてのフィールドを修正できます。ldap oclAccessがpwdPolicyで動作しないようです

ldappasswdを実行しているとき、私はInsufficient access (50)

を得る。これは私のolcAccessです:

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by dn="cn=admin,dc=zed,dc=com" write by dn="cn=usermanagement,dc=zed,dc=com" write by anonymous auth by * none 
olcAccess: {1}to dn.base="" by * read 
olcAccess: {2}to * by self write by dn="cn=admin,dc=zed,dc=com" write by dn="cn=usermanagement,dc=zed,dc=com" write by * read 

編集

私はデバッグを有効にしてからldappasswd -H ldap://localhost -x -D "uid=luis,ou=users,dc=zed,dc=com" -W -S "uid=vixian,ou=users,dc=zed,dc=com"を実行しました。ログは示しています

983c0f8 bdb_dn2entry("cn=passworddefault,ou=policies,dc=zed,dc=com") 
5983c0f8 => bdb_entry_get: found entry: "cn=passworddefault,ou=policies,dc=zed,dc=com" 
5983c0f8 bdb_entry_get: rc=0 
5983c0f8 change password must use DELETE followed by ADD/REPLACE 
5983c0f8 send_ldap_result: conn=1004 op=1 p=3 
5983c0f8 send_ldap_result: err=50 matched="" text="Must supply old password to be changed as well as new one" 
5983c0f8 send_ldap_extended: err=50 oid= len=0 
5983c0f8 send_ldap_response: msgid=2 tag=120 err=50 

私はその後のldapmodifyを使用したuserPasswordを削除しようとしましたが、それは成功したが、同じ結果の許可拒否を生成交換または追加します。

私は@ejp提案以下olcAccessを更新しました:

olcAccess: {0}to attrs=userPassword,shadowLastChange 
    by group/groupOfUniqueNames/uniqueMember.exact="cn=itinst,ou=groups,dc=zed,dc=com" write 
    by anonymous auth 
    by self write 
olcAccess: {1}to dn.base="" by * read 
olcAccess: {2}to * 
    by self write 
    by group/groupOfUniqueNames/uniqueMember.exact="cn=itinst,ou=groups,dc=zed,dc=com" write 
    by users read by anonymous search 

答えて

1

問題は、管理者がパスワードを変更したときにポリシーが付着していないということです。

managerDNがパスワードを変更すると「ポリシーは適用されません」。 にはmanagerDNを使用しないでください。それはサーバーが実行するアカウントであり、もちろん何でもできます。別のadmin口座をDITに定義し、適切なアクセス権を与えてください。これは、下記の例のldap adminsグループ全体と同じです。

あなたのolcAccessとは関係ありません。これを正しく行う方法については、ドキュメントをご覧ください。私が持っている:

olcAccess {0}to attrs=userPassword 
    by dn.base="cn=replicator,dc=verismart,dc=com,c=us" write 
    by group/groupOfUniqueNames/uniqueMember.exact="cn=ldap admins,ou=groups,dc=verismartlabs,dc=com" write 
    by group/groupOfUniqueNames/uniqueMember.exact="cn=applications,ou=groups,dc=verismartlabs,dc=com" write 
    by anonymous auth by self write 
olcAccess {1}to dn.base="" by * read 
olcAccess {2}to * 
    by self write 
    by dn.base="cn=replicator,dc=verismart,dc=com,c=us" write 
    by group/groupOfUniqueNames/uniqueMember.exact="cn=ldap admins,ou=groups,dc=verismartlabs,dc=com" write 
    by group/groupOfUniqueNames/uniqueMember.exact="cn=applications,ou=groups,dc=verismartlabs,dc=com" write 
    by users read 
    by anonymous search 

EDITをあなたはppolicyオーバーレイを使用しているとして:

  1. あなたはとてもあなたがもしあれば拡張応答を見ることができますldappasswdから-e ppolicy引数を使用する必要があります。
  2. また、-aオプションを使用して、ldappasswdを使用して、ログに示されている古いパスワードを指定するか、または-Aを入力する必要があります。変更ログはchange password must use DELETE followed by ADD/REPLACEです。古いパスワードと新しいパスワードの両方を入力する必要があります。 ldappasswdは古いもののDELETEと新しい値のADDまたはREPLACEを送信します。
  3. 古いパスワードを知らずに管理者にやってもらう方法は別の質問です。アプリケーションを使って私の仕事をしていますが、ldappasswdで決して行っていません。たぶん-e ppolicyもその答えです。

EDIT 2パスワードポリシーでpwdSafeModify=TRUEを持っているからです。このような無駄な設定により、管理者は古いパスワードを知らなくてもパスワードをリセットすることは不可能になり、古いパスワードがわかっていれば管理上のリセットはまったく必要ありません。私はそれをオフにしているが、すべてのパスワードはJavaコードによってのみ変更されます:ユーザ自身のためのものと管理者のためのものがありますので、pwdSafeModifyを強制することができます。

+0

私はolcAccesssから管理者を削除しました。おそらく私の設定はフォーマットの欠如によって間違っていますが、匿名は書き込みアクセス権が与えられていません。私はDITにアカウントを追加しましたが、まだアクセスが不十分です。 – Luis

+0

OK私は誤読し、それを修正し、編集を参照してください。あなたはパスワードポリシーのエントリーを投稿できますか? 'ppolicy'の設定は? – EJP

関連する問題