ldap强制用户更改密码

ldap强制用户更改密码

我正在使用 CentOS-ds(基于 Redhat-DS 和 389 目录服务器)。

我已经设置了 LDAP,并开始对用户进行身份验证(还有 Sudo,这是一个很方便的功能!)。甚至 passwd 也可以很好地更改存储在 Ldap 中的密码。但是,我有一个小问题。如何强制所有用户帐户在登录服务器后创建新密码?通常我会这样做:

chage -d 0 username

似乎没有“ldap-ified”。我如何强制人们在下次(ssh)登录时创建新密码?我需要创建用户帐户,但我真的不希望人们保留我为他们设置的密码。

*编辑 - 我已将 LDAP 服务器设置为在密码重置时强制更改密码。但是,我似乎找不到以正确方式“重置”密码以触发此操作的方法。(我所能找到的只是以目录管理员身份登录并更改其密码)*编辑 2。由于一旦解决了这一部分,我们将把许多机器迁移到 LDAP,因此我编写了一个脚本以 root 身份运行以设置 LDAP 身份验证。也许我在这里遗漏了什么?(编辑了服务器和 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

答案1

我找到了一个解决方案:在用户的 LDAP 条目中,设置ShadowLastChange = 0这将强制用户必须重置其 LDAP 密码。但是,还有另一个错误,然后您必须修改 LDAP 服务器上的权限(ACL)(我在Allow Self entry modificationOU=People 上有一个默认权限),以允许他们修改目标ShadownLastChange

否则,他们无法更改该值,并且该值保持为零,迫使他们每次登录时都必须重新输入密码。

答案2

尝试 passwordMustChange 属性

启用时,此属性要求用户在首次登录目录时或目录管理员重置密码后更改密码。即使禁用用户定义的密码,用户也必须更改密码。如果将此属性设置为关闭,目录管理员分配的密码不应遵循任何明显的约定,并且应该很难被发现。默认情况下,此属性处于关闭状态。

参考:-http://www.centos.org/docs/5/html/CDS/ag/8.0/User_Account_Management-Managing_the_Password_Policy.html

答案3

@Brian 更改 shadowlastchange=0 实际上是个坏主意。大多数 LDAP 客户端都不是设计用来更改 shadowlastchange 值。因此,每次登录时,您都会陷入无限循环来更改密码。

一些 ldap 客户端

nss-pam-ldapd - 此功能最近添加到 nss-pam-ldapd 上游项目中 日志:尝试在密码更改时更新用户的 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-拒绝

相关内容