如果缓存数据存在,LDAP 将不会更新
我们有一个 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 看看它是否有效。 到目前为止,还没有什么乐趣,尽管这个指南看起来正是我们需要做的。
We have an SELinux client that authenticates network users using LDAP connecting to an Active Directory server. Since our machines have to operate "untethered," we have to use nscd to cache group and passwd info.
Here's the issue. If we change group information on the Active Directory server, then log in on the client, if a cache exists for that user, LDAP seems to ignore the server and only use the cached data. The only way we've been able to get an update is to invalidate the passwd cache.
Significant portion of /etc/nsswitch.conf:
passwd: file ldap cache group: file ldap cache shadow: file ldap cache
Thanks.
Update: Figured out running strace getent passwd
that nscd cache gets checked before /etc/nsswitch.conf gets read, so the configuration of nss doesn't matter.
Update 2: Playing with nss_updatedb today to see if it will work. So far no joy, although this howto looks like exactly what we need to do.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您不想缓存活动目录中的结果,那么您需要关闭 nscd 或将其缓存生命周期设置为几分钟(编辑 /etc/nscd.conf)。
我相信 passwd 的默认生存时间是 10 分钟,组的默认生存时间是 1 小时。
If you don't want to cache results from active directory then you need to either turn off nscd or set its cache life time to a few minutes (edit /etc/nscd.conf).
I believe the default time to live is 10 minutes for passwd and and hour for group.
您可以使用以下命令轻松刷新 nscd 缓存:
使用给定命令刷新 nscd 缓存后,您将看到更改的 LDAP 数据。
有关更多详细信息,请参阅:http: //sysadmin-notepad.blogspot.rs/2013/05/how-to-flush-nscd-cache-in-linux.html
You can easily flush nscd cache with following commands:
After flushing nscd cache with given commands you would see changed LDAP data.
For more details see: http://sysadmin-notepad.blogspot.rs/2013/05/how-to-flush-nscd-cache-in-linux.html
我们最终通过使用 nss_updatedb 在本地缓存组和 passwd 数据库解决了这个问题。 然后我们关闭nscd。
我们将 pam_exec 模块添加到 pam.d 列表中,并使用它在身份验证之前运行 nss_updatedb 以确保本地缓存是最新的。
We finally resolved this by using nss_updatedb to cache the group and passwd databases locally. We then turned off nscd.
We added the pam_exec module to the pam.d listing and use it to run nss_updatedb before authentication to make sure the local cache is up to date.