17.3. 在密码到期后自动禁用帐户所需时间


按照以下步骤配置在 dc=example,dc=com 条目下激活用户的基于时间的锁定策略,该策略不会更改其密码超过 28 天。

前提条件

  • 用户必须在其条目中设置 passwordExpirationTime 属性。

流程

  1. 启用密码过期功能:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace passwordExp=on
  2. 启用帐户策略插件:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin account-policy enable
  3. 配置插件配置条目:

    # 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 --always-record-login-attr lastLoginTime --state-attr non_existent_attribute --alt-state-attr passwordExpirationTime --spec-attr acctPolicySubentry --limit-attr accountInactivityLimit

    这个命令使用以下选项:

    • --always-record-login yes :启用登录时间的日志。这需要使用 Service (CoS)或具有帐户策略的角色,即使它没有设置 acctPolicySubentry 属性。
    • --always-record-login-attr lastLoginTime :配置 Account Policy 插件将最后的登录时间保存在用户的 lastLoginTime 属性中。
    • --state-attr non_existent_attribute :将用于评估帐户策略的主时间属性设为不存在的 dummy 属性名称。
    • --Alt-state-attr passwordExpirationTime :配置插件以使用 passwordExpirationTime 属性作为要检查的替代属性。
    • --spec-attr acctPolicySubentry: Configures Directory Server 将策略应用到设置了 acctPolicySubentry 属性的条目。您可以在 CoS 条目中配置此属性。
    • --limit-attr accountInactivityLimit :配置帐户策略条目中的 accountInactivityLimit 属性会保存帐户在上次密码更改后被激活的时间。
  4. 重启实例:

    # dsctl instance_name restart
  5. 创建 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: 2419200
    cn: Account Inactivation Policy

    accountInactivityLimit 属性中的值在更改密码后将 Directory 服务器配置为激活帐户 2419200 秒(28 天)。

  6. 创建 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

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

  7. 创建 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

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

验证

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

    # ldapmodify -H ldap://server.example.com -x -D "cn=Directory Manager" -W
    
    dn: uid=example,ou=People,dc=example,dc=com
    changetype: modify
    replace: passwordExpirationTime
    passwordExpirationTime: 20210101000000Z
  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.

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部