我有 CentOS6,使用 LDAP 用户身份验证,使用 OpenLDAP 和 SSSD。我试图强制用户更改密码。根据这个 ServerFault 问题我尝试将其设置ShadowLastChange
为0
,但当用户使用 SSH 登录时它似乎被忽略了。
在那个问题中有一个警告,它可能会导致密码更改请求无限循环的错误,但我甚至没有收到一个请求......
这个问题中还有另一个建议,
尝试 passwordMustChange 属性
但是当我尝试在我的.ldif
文件中使用它时,我收到一个Undefined attribute type (17)
错误
我还尝试passwd -e username
在本地 Unix 用户上使用,只是为了验证它是否正常工作,是的 - 该本地用户在 SSH 登录时被迫更改密码。
编辑
我发现Password Policies
覆盖在OpenLDAP 文档。这有帮助吗?(如果有帮助的话 - 这是解决我的问题的唯一方法吗?)
编辑2
Password Policies
似乎也没有什么帮助。
编辑3
A。
实际上,密码策略是工作正常。首先我尝试用hp 支持建议- 但未ppolicy
显示在日志文件中。
但后来我找到了验证策略的好方法——设置pwdAllowUserChange
为FALSE
,然后看到用户无法使用更改密码passwd
,服务器会发出错误消息。或者,更改pwdMaxAge
为1
,登录,然后看到用户收到密码更改提示。
但是,pwdMustChange: TRUE
仍然没有帮助。在我更改用户密码后(使用 JXplorer 客户端或从 Unix shell ldapmodify
),用户没有收到密码更改通知。
也许我没有按预期设置密码?在slapo-ppolicy
他们说
密码必须更改
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.
set
和reset
密码之间似乎有区别。我试过了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
编辑4
好的,我发现如果我pwdReset:TRUE
在用户条目中设置,则他登录时需要更改密码。我认为这取决于 PPolicy 的 pwdMustChange: TRUE
。
它正在起作用,但我不明白为什么这是我能找到的唯一解决方案。(也是谷歌找不到我的解决方案!)此外,奇怪的是必须进行这种改变ldapmodify
- 在我改变它之前,JXplorer 甚至没有向我显示该属性......