LDAP使用posixAccount模式和相关的属性,我不知道是否有一个标准的方式来禁用一个帐户。 重新启用帐户显然应重新启用以前的密码。
我知道passwd --lock在/etc/passwd的encryption密码前面加了一个感叹号。 相同的约定是否与LDAP条目的userPasswd字段一起工作?
更新:我知道下面的PAM / NSS,我的问题是专门针对LDAP服务器。 一旦帐户被locking,我希望用户无法打开到LDAP服务器本身的身份validation连接(使用自己的凭据)。 这是因为有几个服务使用成功的身份validation连接作为简单的身份validation机制,而不使用PAM来执行此任务(这在Web界面中很常见)。
没有标准的方法,但有几种方法可以完成这个任务,每个方法都是ldap.conf中的一个configuration选项(或者根据您的发行版本及其pam_ldap构build时间设置,pam-ldap.conf):
pam_filter:使用自定义filter和LDAP中表示非活动帐户的属性。
pam_check_host_attr:pam_ldap将检查用户对象是否有匹配的“主机”属性。 如果以这种方式实现它,则只要用户能够login,就可以将主机名删除/添加到该属性。 这不会碰他的密码。
pam_check_service_attr:还没有使用过,但应该像pam_check_host_attr一样工作。
嘿。
Unix / Linux和标准化的方式来做一些事情。 有趣的小伙子,你是。 我知道,在很多情况下,我知道有一些标准的做事方式,但LDAP当然不是其中之一。 用Perl的座右铭押韵,“有多种方法可以做到这一点”。
与/ etc / passwd (或者,在/ etc / shadow中精确地)相同的约定将会起作用。 如果结果来自于pam_ldap,pam_mysql,nss_files,nss_bdb,nss_mysql,nss_ldap或其他来源,则系统正在使用PAM(用于身份validation)和NSS库(用于名称查找)来parsing帐户信息,对于用户级应用程序,它是透明的只要它在标准的forms。
所以,当谈到LDAP …
你最喜欢的方式是什么? 如果使用passwd命令,那么你只需要用pam_ldap和nss_ldap挂钩你的系统。 那么所有熟悉的工具将继续照常工作。
如您在这里所build议的,您可能有兴趣尝试slapo-ppolicy (密码策略覆盖)。 这确实是一种标准 ,尽pipe对于你想要做的事情可能有点矫枉过正。 具体来说,有趣的属性是
pwdAccountLockedTime This attribute contains the time that the user's account was locked. If the account has been locked, the password may no longer be used to authenticate the user to the directory. If pwdAccountLockedTime is set to 000001010000Z, the user's account has been permanently locked and may only be unlocked by an administrator.