sssd 和 ldap 身份验证缓存

Set*_*yer 11 ldap cache latency sssd

在我们运行 OpenSUSE 12.2 的机器上,我们已经安装了 OpenLDAP 和sssd守护进程。我们正在使用这两个服务进行用户身份验证。最近我们创建了一个脚本,它动态地为我们的虚拟主机创建新的网络用户,但现在我们正在处理一个问题。

sssd 似乎使用了某种缓存,并在getent passwd此期间返回已从 LDAP 中删除的用户。有时它不会立即返回最近创建的用户,因为它在脚本中是必要的(用于使用setfacl和设置权限chown)。

重新启动 LDAP,sssd或者nscd没有帮助,也没有使用sss_cache -U. 我们尝试降低配置中的缓存,sssd但似乎没有任何影响。

在将新用户添加到 LDAP 或完全禁用缓存后,我们需要以某种方式显式刷新缓存。

有没有人遇到过类似的问题?

ger*_*ard 6

尝试sss_cache -E

或者尝试停止 sssd,删除 /var/lib/sss/db/* 中的文件,然后重新启动 sssd


473*_*469 5

从手册页(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
Run Code Online (Sandbox Code Playgroud)

我会插入类似的东西:

[nss]
enum_cache_timeout 10
Run Code Online (Sandbox Code Playgroud)

(根据需要调整秒数)


Gri*_*vit 2

  • 您无法使用 sssd 完全禁用缓存。

  • 您可以完全禁用 sss 作为身份验证提供程序,然后直接查询 LDAP(如果您需要的话)。

例如,在 中/etc/nsswitch.conf,将行更改为:

passwd:     files sss
Run Code Online (Sandbox Code Playgroud)

passwd:     files ldap
Run Code Online (Sandbox Code Playgroud)
  • 您可以通过删除来强制清理缓存/var/lib/sss/db/*

  • 您指的是“cache_credentials”吗?正如名称所暗示的那样,这是否会禁用所有缓存或仅禁用凭据? (2认同)