我需要find一种自动通知LDAP帐户用户的方式,以便他们的密码何时到期,并强制他们更改密码。 我是相当新的LDAP。我在RHEL 5.3上运行openldap 2.3.43.el5我想find一个解决scheme(可能在脚本forms),但我打开其他久经考验的解决scheme。
我打算做的是从下面的命令parsing,过滤或格式化LDAP查询输出(示例)
slapcat -b "cn=Manager,dc=berkerly dc=ac dc=uk"
这样我得到一个输出显示用户cn(名称)和LDAP数据库中的用户pwChangedTime字段为例
cn: jbloggs : pwdChangedTime: 2011078159Z
或者更好的仍然在同一行上
cn: jbloggs :pwdChangedTime: 2011078159Z
这样,我可以告诉用户密码上次更改时,然后基于我们的密码策略时,LDAP帐户的用户密码将过期。 实际上,这将使我能够很快从迷你报告中计算出密码到期的时间。 我希望在脚本中做到这一点,但不知道如何从slapcat命令输出实现这一点。
在LDAP中有一种方法或命令,列出一个用户cn(名称)和pwdChanged时间或其他字段。我是一个LDAP新手,我只熟悉slapcat命令列出所有LDAP用户及其各种属性字段我LDAP数据库。 这slapcat输出是不容易grep和awkfind我正在寻找什么。
此外,我需要确认字段pwdChangedTime:是否真正代表该用户的密码上次更改的date。
最后有没有办法像在普通的本地Unix,Linux帐户上那样强制用户更改他们的LDAP密码。
你的帮助将不胜感激。
OpenLDAP本身可以通过覆盖来扩展。 看看它的密码政策覆盖 。
你的LDAP用户使用什么types的应用程序?
我认为输出应该像这样(没testing过)可以被格式化:
slapcat -b "cn=Manager,dc=berkerly dc=ac dc=uk" | egrep "(cn:|pwdChangedTime)"
这应该为所有用户输出cn和pwdChangedTime。 我将如何做到这一点:
1)用slapcat获取用户列表
2)对于该列表中的每个用户,使用上面的grep获取cn和pwdChangedTime。 另一个select是使用Perl,有一个LDAP库。 使用这个库很容易从LDAP中获取数据。
3)检查从pwdChangedTime var中取出date。
我不知道你是否可以强制用户改变他们通过LDAP。 我认为有一个方法,只是不确定。
希望我的post是有用的。
PS:对不起,我不能发布更多的代码示例,但我在工作atm。
为了确定哪些用户的密码将到期以及何时到达,转储LDIF肯定是可能的,尽pipe这是不可取的,也绝对不可扩展。 您build议的方法需要对目录进行全表扫描,然后进行一些文本争夺,以便将其全部放在一行上,等等。
据我所知,OpenLDAP支持密码过期和密码过期控制。 这些控件是在绑定响应中从服务器返回的。 他们的目的是通知用户与密码策略相关的用户密码的状态。 这些控制在VCHU中进行了描述。
例如,使用这些控件使客户端负责用户通知,并且已经被UNIXlogin客户端支持(尽pipeSolaris客户端已经损坏,请参阅本文 )。 当客户端收到绑定响应并检查是否存在密码过期的控件(如果身份validation不成功)和密码过期控制,则客户端可以采取适当的措施。 客户必须始终检查LDAP响应中的控件。
由客户执行的通知是灵活的,可configuration的,dynamic的和可扩展的。 通过服务器完成通知是没有这些东西。
还有一些其他的事情可以用来增强身份validation体验,例如,使用具有检查pwdChangedTime的filter的LDAP断言控件 ,并使filter成功的绑定成为条件。