如果存在缓存数据,LDAP将不会更新

时间:2009-01-12 20:53:18

标签: active-directory ldap nss selinux

我们有一个SELinux客户端,使用连接到Active Directory服务器的LDAP对网络用户进行身份验证。由于我们的机器必须运行“不受限制”,我们必须使用nscd来缓存组和密码信息。

这是问题所在。如果我们更改Active Directory服务器上的组信息,则登录客户端,如果该用户存在缓存,则LDAP似乎忽略服务器并仅使用缓存数据。我们能够获得更新的唯一方法是使passwd缓存无效。

/etc/nsswitch.conf的重要部分:

    passwd: file ldap cache
    group:  file ldap cache
    shadow: file ldap cache

感谢。

更新:计算出运行strace getent passwd在读取/etc/nsswitch.conf之前检查nscd缓存,因此nss的配置无关紧要。

更新2:今天玩nss_updatedb以查看它是否有效。到目前为止,没有快乐,尽管this howto看起来正是我们需要做的。

3 个答案:

答案 0 :(得分:1)

如果您不想从活动目录缓存结果,则需要关闭nscd或将其缓存生命周期设置为几分钟(编辑/etc/nscd.conf)。 我认为默认的生存时间是密码为10分钟,组为小时。

答案 1 :(得分:0)

我们最终通过使用nss_updatedb在本地缓存组和passwd数据库来解决这个问题。然后我们关闭了nscd。

我们将pam_exec模块添加到pam.d列表中,并在验证之前使用它运行nss_updatedb,以确保本地缓存是最新的。

答案 2 :(得分:0)

您可以使用以下命令轻松刷新nscd缓存:

sudo nscd -i passwd
sudo nscd -i group

在使用给定命令刷新nscd缓存后,您将看到更改的LDAP数据。

有关详细信息,请参阅:http://sysadmin-notepad.blogspot.rs/2013/05/how-to-flush-nscd-cache-in-linux.html