如何在 CentOS 7 上清除用户缓存的 Active Directory 密码?

如何在 CentOS 7 上清除用户缓存的 Active Directory 密码?

我在公司笔记本电脑上安装了 CentOS 7,并将其配置为向公司 AD 服务器进行身份验证,如下所示:

  • 安装包:

    yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python
    
  • 将 AD 服务器添加到/etc/hosts.

  • 加入领域:

    realm join --user=tech adserver.example.com
    realm permit -g activedirectorygroup@domain
    
  • 更改use_fully_qualified_namesFalsefallback_homedir/home/%u/etc/sssd/sssd.conf

  • 重新启动守护进程:

    systemctl restart sssd && systemctl daemon-reload
    
  • 设置 ITGROUP 以便能够使用 sudo:

    echo "%ITGROUP  ALL=(ALL)  ALL" > /etc/sudoers.d/ITGROUP
    

一切都运转良好。 ...直到我更改了 Windows 10 PC 上的密码。事实上,CentOS 盒子让我可以,但只是用老的密码。我已经做了很多谷歌搜索并尝试了很多东西(例如,sss_cache -Ekdestroy -A,但我似乎无法刷新缓存,所以我可以使用我的新的密码。

那么,如何在 CentOS 7 上清除用户缓存的 Active Directory 密码?有没有办法让“普通”用户自己做这件事(如果我们想将其推广到其他系统)?

更新:

我尝试了一些建议,但笔记本电脑不会忘记旧的凭据。我最终从领域中删除了电脑并重新添加它。我确实将其添加到我的 sssd.conf 中:

[sssd]
...
account_cache_expiration = 2
cached_auth_timeout = 3600
refresh_expired_interval = 4050

[pam]
reconnection_retries = 3
offline_credentials_expiration = 2

登录似乎正在缓存 AD 内容,但Authenticated with cached credentials, your cached password will expire at:现在当我登录或 sudo 时它会告诉我。我希望下次我的密码过期并更改它时,该系统能够识别它。仅供参考,我的整个配置是:

[sssd]
domains = adserver.example.com
config_file_version = 2
services = nss, pam

[domain/adserver.example.com]
ad_domain = adserver.example.com
krb5_realm = adserver.example.com
realmd_tags = manages-system joined-with-samba 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = simple
simple_allow_groups = [email protected]
account_cache_expiration = 2
cached_auth_timeout = 3600
refresh_expired_interval = 4050

[pam]
reconnection_retries = 3
offline_credentials_expiration = 2

更新#2:

我已经使用这个配置有一段时间了。我已经增加了account_cache_expirationoffline_credentials_expirationfrom24,但它运行得很好,我们已经开始在我们的服务器上使用这个设置。

答案1

那么,如何在 CentOS 7 上清除用户缓存的 Active Directory 密码?

通常sss_cache应该是告诉 sssd 重新检索它可能已经缓存的对象的正确方法。但如果无法从 AD 检索到任何内容,sssd 确实会再次使用缓存的对象。

您应该始终能够通过设置来重置缓存的凭据

[domain/your-domain.tld]
...
cache_credentials = False

在 /etc/sssd/sssd.conf 中,重新启动 sssd 服务并重新对您的用户进行身份验证。这样您应该能够确定 SSSD/AD 上的身份验证是否有效。要检查完整的设置是否适用于当前设置(不使用任何缓存),实际上总是一件好事删除所有缓存。请参阅底部的信息,了解如何最有效地做到这一点。

有没有办法让“普通”用户自己做这件事(如果我们想将其推广到其他系统)?

我不知道如何安全地实施这一点。恕我直言,这不是你想要的。但无论如何,这应该是没有必要的。 SSSD 应始终根据某些条件重新评估其缓存的凭据。

大多数时候,最好设置以下内容以强制几天后重新评估,并实际注意到环境是否出现问题

[pam]
...
offline_credentials_expiration

默认offline_credentials_expiration设置为0(无限制)


大多数时候,当我想确定没有更多缓存在使用时,我会执行以下操作

systemctl stop sssd
rm /var/lib/sssd/db/*
systemctl start sssd

这可能会导致 sssd 设置无法正常工作(但前提是其设置出现问题,因为 sssd 保存的所有数据都可以从 AD 中重新检索)。

相关内容