我已将用户添加到 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
这是一个错误吗
sss_cache
?我是不是应该
rm -f /var/lib/sss/db/cache_LDAP.ldb
换个方式呢?到那时,我是不是应该立即开始
cache_credentials = false
行动sssd.conf
?
答案1
我不认为这是 中的错误
sss_cache
,您的配置引用了一个名为 的域LOCAL
,但该域尚未定义。只需LOCAL
从该domains
行中删除并重试即可。这是不同的。
sss_cache
通过将过期时间戳设置为过去来工作。这会强制下次查找,但不会完全删除条目,因此在客户端离线的情况下它们仍然存在这实际上取决于您是否允许用户在与服务器的连接丢失时登录。
答案2
sss_cache 不会“清除”缓存。它只是将缓存条目标记为无效,这应该会触发刷新,至少在一切正常运行的情况下。
如果您确实想清除缓存,您可以删除 /var/lib/sss/db 中的所有内容并重新启动 sssd。
例如
# systemctl stop sssd
# cd /var/lib/sss/db
# rm *
# systemctl restart sssd