Вы можете попытаться отключить кеширование учетных данных, добавив директиву в /etc/sssd/sssd.conf:
[domain/default]
cache_credentials = False
. Затем вы можете проверить, что sssd использует кеш для учетных данных с помощью консольной команды:
# authconfig --test|grep credential
credential caching in SSSD is disabled
Вы не можете отключить кэширование полностью с помощью sssd.
Вы можете полностью отключить sss как провайдера аутентификации и просто запросить LDAP напрямую, если хотите.
Например, в /etc/nsswitch. conf
, измените строки типа:
passwd: files sss
-
passwd: files ldap
/var/lib/sss/db/*
На странице руководства (sssd.conf):
NSS configuration options
These options can be used to configure the Name Service Switch (NSS)
service.
enum_cache_timeout (integer)
How many seconds should nss_sss cache enumerations (requests for
info about all users)
Default: 120
Я бы вставил что-то вроде:
[nss]
enum_cache_timeout 10
(отрегулируйте секунды по своему усмотрению)
Аналогичные проблемы исчезли
Я заметил, что getent passwd | grep <имя пользователя>
и
getent passwd
не вернет те же результаты,
Используя strace, я обнаружил, что getent passwd
проверяет данные в "/ var / lib / sss / mc / passwd "
wheras getent passwd | grep
подключится к / var / lib / sss / pipe / nss
и будет получать данные оттуда.
Это меня действительно сбивает с толку, поскольку оба подхода, похоже, поражают разные кеши . Кажется, что эти кеши обновляются, когда я запускаю sudo su -
, но в остальном кажется, что они действительны в течение нескольких часов.
На практике получается, например, что Доступ по ssh не будет работать для пользователя через несколько минут после его удаления из ldap, но getent passwd будет продолжать показывать его часами, поэтому мне сложно проверить, действительно ли этот пользователь удален или нет (без очистки некоторые кеши все время вручную)
Попробуйте sss_cache -E
или попробуйте остановить sssd, удалить файлы в / var / lib / sss / db / * и перезапустить sssd