具有SSSD的LDAP:强制用户更改密码 – “ShadowLastChange”无法正常工作

我有CentOS6,使用LDAP用户authentication,使用OpenLDAP和SSSD。 我试图强制用户更改密码。 根据这个ServerFault的问题,我试图将ShadowLastChange设置为0 ,但是当用户使用SSHlogin时,它似乎被忽略了。

在这个问题有一个警告,它可能会导致无限循环的密码更改请求的错误,但我甚至没有得到单一的请求…

在这个问题上还有另一个build议,

试试passwordMustChange属性

但是当我尝试在我的.ldif文件中使用它时,我得到一个Undefined attribute type (17)错误

我也尝试在本地Unix用户上使用passwd -e username ,只是为了validation它是否正常工作,是的 – 当SSH用户login后,本地用户被迫更改密码。

编辑

我在OpenLDAP文档中发现了Password Policies覆盖。 应该有帮助吗? (如果是的话 – 是解决我的问题的唯一方法吗?)

EDIT2

Password Policies似乎也没有帮助。

EDIT3

一个。

实际上,密码策略正在工作。 首先,我试图用hp支持提示来检查它,但ppolicy没有显示在日志文件中。

但后来我发现validation策略的好方法 – 将pwdAllowUserChange设置为FALSE ,并查看用户无法使用passwd更改密码,并从服务器收到错误消息。 或者,将pwdMaxAge更改为1 ,login并查看用户是否收到密码更改提示。

但是, pwdMustChange: TRUE仍然没有帮助。 在更改用户密码(使用JXplorer客户端或从Unix shell ldapmodify )后,用户不会收到密码更改通知。

也许我没有按预期设置密码? 他们说,在slapo-ppolicy

pwdMustChange

  This attribute specifies whether users must change their passwords when they first bind to the directory after a password is set or reset by the administrator, or not. If pwdMustChange has a value of "TRUE", users must change their passwords when they first bind to the directory after a pass- word is set or reset by the administrator. 

setreset密码似乎有区别。 我试图set 。 也许reset会帮助我。 我怎样才能重设密码?

这是我的政策:

 dn: cn=default,ou=policies,dc=***,dc=com cn: default objectClass: pwdPolicy objectClass: person objectClass: top pwdAttribute: userPassword pwdCheckQuality: 2 pwdExpireWarning: 604800 pwdFailureCountInterval: 30 pwdInHistory: 2 pwdLockout: TRUE pwdLockoutDuration: 172800 pwdMinAge: 0 pwdMinLength: 6 pwdMustChange: TRUE pwdSafeModify: FALSE sn: dummy value pwdAllowUserChange: FALSE pwdGraceAuthNLimit: 0 pwdMaxFailure: 5 pwdMaxAge: 999999 

B.

(针对Cameron Kerr在评论中提出的问题)

这是CentOS 6.6。 这些是我的/etc/pam.d/system-auth*文件:

 # cat /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_sss.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session optional pam_oddjob_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so # cat /etc/pam.d/system-auth-ac #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_sss.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session optional pam_oddjob_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so 

EDIT4

好的,我发现如果我在用户的条目中设置了pwdReset:TRUE ,他需要在login时更改密码。 我认为这取决于PPolicy的pwdMustChange: TRUE

它正在工作,但我不明白为什么它是我能find的唯一解决scheme。 (以及Google无法find我的解决scheme!)另外,这种改变必须使用ldapmodify来完成是很奇怪的,JXplorer在改变它之前甚至没有向我显示这个属性。