我正在使用CentOS-ds(基于Redhat-DS和389目录服务器)。
我有LDAP设置,并努力validation用户(和Sudo,这是一个方便的function!)。 即使passwd正在努力改变存储在Ldap中的密码。 不过,我有一个小问题。 login到服务器后,如何强制所有用户帐户创build新密码? 正常的方式,我会做到这一点:
chage -d 0 username
似乎并没有被“灌输”。 我如何强迫他人在他们的下一个(ssh)login中创build新的密码? 我需要创build用户帐户,我真的不希望人们保持我为他们设置的密码..
*编辑 – 我已经设置LDAP服务器强制密码更改时,密码重置。 但是,我似乎无法find一种方法来以正确的方式“重置”密码来触发此。 (所有我能find的只是以目录pipe理员身份login并更改密码)* edit2。 由于我们将要把许多机器移动到LDAP,所以我编写了一个脚本,以root身份运行以设置LDAP身份validation。 也许我在这里错过了什么? (编辑出来的服务器和basedn。)
#!/bin/sh # authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=<server1>,<server2> --ldapbasedn="<basedn>" --update echo 'sudoers: files ldap' >> /etc/nsswitch.conf echo 'base <basedn> timelimit 120 bind_policy soft bind_timelimit 120 idle_timelimit 3600 uri ldap://<server1>/ uri ldap://<server2>/ ssl no tls_cacertdir /etc/openldap/cacerts pam_password md5 sudoers_base ou=SUDOers,<basedn> ' > /etc/ldap.conf
我find了一个解决scheme:在用户LDAP条目中,设置ShadowLastChange = 0这将强制用户不得不重置他们的LDAP密码。 但是,还有另一个bug,那么你必须修改LDAP服务器上的权限(ACL的)(我有OU = People中Allow Self entry modification的默认权限)以允许它们修改目标ShadownLastChange 。
否则,它们不能更改该值,并且它保持为零,从而迫使它们在每次login时都要重新设置密码。
试试passwordMustChange属性
启用时,此属性要求用户在首次login到目录时或在目录pipe理器重置密码后更改其密码。 即使用户定义的密码被禁用,用户也需要更改密码。 如果此属性设置为closures,则由目录pipe理员分配的密码不应遵循任何明显的约定,应该很难发现。 该属性默认是closures的。
@Brian改变shadowlastchange = 0实际上是一个坏主意。 大多数LDAP客户端不是用来更改shadowlastchange值的值。 所以你会陷入一个无限循环来更改密码,每次login。
一些ldap客户端
nss-pam-ldapd – 最近在nss-pam-ldapd上游项目中添加了此function日志:尝试在密码更改时更新用户的shadowLastChange属性(仅当属性出现时才尝试更新) http: //lists.arthurdejong.org/nss-pam-ldapd-commits/2010/msg00302.html
sssd –
还是一个RFE https://bugzilla.redhat.com/show_bug.cgi?id=739312
samba-ldap-tools – 已拒绝