sss_cache 一直在寻找本地域,而不是清除 LDAP 记录

sss_cache 一直在寻找本地域,而不是清除 LDAP 记录

我已将用户添加到 LDAP 中的组。该用户显示在 ldapsearch 中。但是,当我使用 在我的 RHEL 实例上列出组成员时,该用户并未显示getent group my_group

我是否可以正确地假设这是因为 SSSD 缓存了组成员身份?

当我尝试清除该组的 SSSD 缓存时,它什么也没做:

# sss_cache -d LDAP -g my_group
(Mon Dec 14 10:40:41:816191 2015) [sss_cache] [confdb_get_domain_internal] (0x0010): Unknown domain [LOCAL]
(Mon Dec 14 10:40:41:816364 2015) [sss_cache] [confdb_get_domains] (0x0010): Error (2 [No such file or directory]) retrieving domain [LOCAL], skipping!
# echo $?
0

具体来说,用户仍然没有出现在getent group my_group列表中。

当我在命令中指定“LDAP”域时,为什么它会寻找“LOCAL”域?

这是 SSSD 配置

# cat /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = LOCAL,LDAP
debug_level = 5

[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
entry_cache_timeout = 300
entry_cache_nowait_percentage = 75

[pam]
reconnection_retries = 3
offline_credentials_expiration = 2
offline_failed_login_attempts = 3
offline_failed_login_delay = 5

[domain/LDAP]
cache_credentials = true

id_provider = ldap
auth_provider = ldap

ldap_uri = ldaps://my_hostname.my_domain.com
ldap_search_base = dc=my_domain,dc=com
ldap_id_use_start_tls = true
ldap_tls_reqcert = never
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt

debug_level = 5
  1. 这是一个错误吗sss_cache

  2. 我是不是应该rm -f /var/lib/sss/db/cache_LDAP.ldb换个方式呢?

  3. 到那时,我是不是应该立即开始cache_credentials = false行动sssd.conf

答案1

  1. 我不认为这是 中的错误sss_cache,您的配置引用了一个名为 的域LOCAL,但该域尚未定义。只需LOCAL从该domains行中删除并重试即可。

  2. 这是不同的。sss_cache通过将过期时间戳设置为过去来工作。这会强制下次查找,但不会完全删除条目,因此在客户端离线的情况下它们仍然存在

  3. 这实际上取决于您是否允许用户在与服务器的连接丢失时登录。

答案2

sss_cache 不会“清除”缓存。它只是将缓存条目标记为无效,这应该会触发刷新,至少在一切正常运行的情况下。

如果您确实想清除缓存,您可以删除 /var/lib/sss/db 中的所有内容并重新启动 sssd。

例如

# systemctl stop sssd
# cd /var/lib/sss/db
# rm *
# systemctl restart sssd

相关内容