我们有一个 SELinux 客户端,它使用连接到 Active Directory 服务器的 LDAP 对网络用户进行身份验证。由于我们的机器必须“不受限制”地运行,我们必须使用 nscd 来缓存组和密码信息。
这就是问题所在。如果我们在 Active Directory 服务器上更改组信息,然后登录客户端,如果该用户存在缓存,LDAP 似乎会忽略服务器并仅使用缓存的数据。我们能够获得更新的唯一方法是使 passwd 缓存无效。
/etc/nsswitch.conf 的重要部分:
passwd:文件 ldap 缓存 组:文件 ldap 缓存 shadow:文件 ldap 缓存
谢谢。
更新:发现strace getent passwd
在读取 /etc/nsswitch.conf 之前会检查 nscd 缓存,因此 nss 的配置无关紧要。
更新 2:今天玩 nss_updatedb 看看它是否有效。到目前为止还没有任何乐趣,尽管这个方法看起来正是我们需要做的。