第 17 章 配置基于时间的帐户锁定策略


您可以使用帐户策略插件配置不同的基于时间的锁定策略,例如:

按照此流程,配置在 dc=example,dc=com 条目下激活的基于时间的锁定策略,该策略没有登录 21 天。

这个帐户不活动功能可确保员工离开公司,并且管理员忘记删除帐户,该目录服务器在一定时间后停用帐户。

流程

  1. 启用帐户策略插件:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin account-policy enable
    Copy to Clipboard Toggle word wrap
  2. 配置插件配置条目:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin account-policy config-entry set "cn=config,cn=Account Policy Plugin,cn=plugins,cn=config" --always-record-login yes --state-attr lastLoginTime --alt-state-attr 1.1 --spec-attr acctPolicySubentry --limit-attr accountInactivityLimit
    Copy to Clipboard Toggle word wrap

    这个命令使用以下选项:

    • --always-record-login yes: 启用登录时间记录。这需要使用 Class of Service (CoS)或具有帐户策略的角色,即使它没有设置 acctPolicySubentry 属性。
    • --state-attr lastLoginTime :配置帐户策略插件将最后登录时间存储在用户的 lastLoginTime 属性中。
    • --Alt-state-attr 1.1 :禁止使用 alternative 属性检查主属性是否不存在。默认情况下,Directory 服务器使用 createTimestamp 属性作为替代方案。但是,如果 Directory 服务器没有设置 lastLoginTime 属性,并且 createTimestamp 比配置的不活跃周期旧,则 Directory 服务器会自动注销现有的用户。禁用 alternative 属性会导致 Directory 服务器在下次登录时自动将 lastLoginTime 属性添加到用户条目。
    • --spec-attr acctPolicySubentry: Configures Directory Server 将策略应用到设置了 acctPolicySubentry 属性的条目。您可以在 CoS 条目中配置此属性。
    • --limit-attr accountInactivityLimit: 配置 account inactivation 策略条目中的 accountInactivityLimit 属性存储不活跃的时间。
  3. 重启实例:

    # dsctl instance_name restart
    Copy to Clipboard Toggle word wrap
  4. 创建 account inactivation 策略条目:

    # ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    
    dn: cn=Account Inactivation Policy,dc=example,dc=com
    objectClass: top
    objectClass: ldapsubentry
    objectClass: extensibleObject
    objectClass: accountpolicy
    accountInactivityLimit: 1814400
    cn: Account Inactivation Policy
    Copy to Clipboard Toggle word wrap

    accountInactivityLimit 属性中的值在最后一次登录后将 Directory 服务器配置为激活帐户 1814400 秒(21 天)。

  5. 创建 CoS 模板条目:

    # ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    
    dn: cn=TemplateCoS,dc=example,dc=com
    objectClass: top
    objectClass: ldapsubentry
    objectClass: extensibleObject
    objectClass: cosTemplate
    acctPolicySubentry: cn=Account Inactivation Policy,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

    此模板条目引用帐户处于激活策略。

  6. 创建 CoS 定义条目:

    # ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    
    dn: cn=DefinitionCoS,dc=example,dc=com
    objectClass: top
    objectClass: ldapsubentry
    objectclass: cosSuperDefinition
    objectclass: cosPointerDefinition
    cosTemplateDn: cn=TemplateCoS,dc=example,dc=com
    cosAttribute: acctPolicySubentry default operational-default
    Copy to Clipboard Toggle word wrap

    此定义条目引用 CoS 模板条目,并导致 acctPolicySubentry 属性出现在每个用户条目中,其值设置为 cn=Account Inactivation Policy,dc=example,dc=com

验证

  1. 将用户的 lastLoginTime 属性设置为比您配置不活跃的时间旧的值:

    # ldapmodify -H ldap://server.example.com -x -D "cn=Directory Manager" -W
    
    dn: uid=example,ou=People,dc=example,dc=com
    changetype: modify
    replace: lastLoginTime
    lastLoginTime: 20210101000000Z
    Copy to Clipboard Toggle word wrap
  2. 尝试以这个用户身份连接到该目录:

    # ldapsearch -H ldap://server.example.com -x -D "uid=example,ou=People,dc=example,dc=com" -W -b "dc=example,dc=com"
    ldap_bind: Constraint violation (19)
    	additional info: Account inactivity limit exceeded. Contact system administrator to reset.
    Copy to Clipboard Toggle word wrap

    如果 Directory Server 拒绝访问并返回这个错误,则帐户不活动。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat