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


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

5.1. 在最后成功登录后自动禁用帐户一定时间

按照以下步骤配置基于时间的锁定策略,该策略会在 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 :启用登录时间的日志记录。这需要使用带帐户策略的类服务(CoS)或角色,即使它没有设置 acctPolicySubentry 属性。
    • --state-attr lastLoginTime :配置帐户策略插件会在用户的 lastLoginTime 属性中存储最后一次登录时间。
    • --Alt-state-attr 1.1 :禁用使用替代属性来检查主属性是否不存在。默认情况下,Directory 服务器使用 createTimestamp 属性作为替代方案。但是,这会导致如果其帐户没有设置 lastLoginTime 属性并且 createTimestamp 比配置的不活跃周期更旧,Directory 服务器会自动记录现有用户。禁用 alternative 属性会导致 Directory 服务器在下次登录时自动将 lastLoginTime 属性添加到用户条目中。
    • --spec-attr acctPolicySubentry: Configures Directory Server 应用策略到设置了 acctPolicySubentry 属性的条目。您可以在 CoS 条目中配置此属性。
    • --limit-attr accountInactivityLimit: Configures that the accountInactivityLimit 属性 in inivation policy entry store the inactive time.
  3. 重启实例:

    # dsctl instance_name restart
    Copy to Clipboard Toggle word wrap
  4. 创建激活策略条目的帐户:

    # 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 属性中的值配置在最后一次登录后,目录服务器处于激活的 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

    如果目录服务器拒绝访问并返回这个错误,则帐户不活跃工作。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat