web-dev-qa-db-ja.com

Linuxで期限切れのLDAPユーザーパスワードを変更する方法

すでに有効期限が切れているLDAPパスワードを変更する方法を誰かがアドバイスできますか?

LDAPユーザーがいて、このユーザーのパスワードの有効期限が切れています:

# su user
You are required to change your password immediately (password aged)
su: Authentication token is no longer valid; new one required
(Ignored)

次に、「passwd」を使用してパスワードを変更できます。しかし、もう一度ログインしようとすると、メッセージはまだ表示されます。 sshログインを試みると、次のメッセージも表示されます。「すぐにパスワードを変更する必要があります(パスワードは期限切れです)」

次に、パスワードを変更します。しかし、もう一度ログインしようとすると、メッセージが残ります...

前もって感謝します。

追伸私も試しました:

user@server$ ldappasswd

Please enter your password: 
ldap_sasl_interactive_bind_s: Invalid credentials (49)
additional info: SASL(-13): user not found: no secret in database
2
Andrey Sapegin

サーバーでshadow *属性を使用していますか?はいの場合、shadowlastchange属性がユーザーによって書き込み可能であることを確認します。そうでない場合、userpassword属性が更新され、shadowLastchangeは変更されません。次回の試行時に、クライアントツールは古いshadowLastChange値を使用してパスワードの有効期間を計算しますそして、パスワードを変更する必要があると思います。

2
Najmuddin

ldappasswdからいくつかの属性が欠落しています

これはほんの一例です

ldappasswd -x -h <Host> -D "<rootdn>" -w <rootdn_password> -s <new_password_for_user> "uid=user,ou=People,dc=example,dc=com"

おそらくあなたはいくつかのポリシーを使用しています(それらのいくつかはLDAPで保持することができます-例えばあなたはあなたのLDAPサーバー設定でそのようなものを得ました)

overlay ppolicy
ppolicy_default "cn=default,ou=policies,dc=example,dc=com"
ppolicy_use_lockout

それらの一部はローカルに保持できます(moduleload ppolicy.la(LDAPサーバー構成の場合)。

おそらく、ユーザーが神の力なしにパスワードを変更できるようにする能力も欠けているでしょう。これを行うには、PAMをリセットするか、(より簡単な方法で)ユーザーが認証なしでuserPassword属性を変更できるようにします。

access to attrs=userPassword
        by self write
        by anonymous auth
        by users none

access to * by * read

より正確な情報が必要な場合はいつでもお知らせください:)

1