我们的用户和组 LDAP 配置正在运行。
我们的服务器使用 LDAP 来存储用户和组。
# /etc/nsswitch.conf :
passwd: compat ldap
group: compat ldap
shadow: compat ldap
但是今天我们在 LDAP 中添加了一个新组,有 3 个用户,然后添加了其他用户。3 个用户在组中,但其他用户不在组中。
我们可以通过使用“groups”看到这一点:更准确地说,“getent group GROUPNAME”显示组中的用户,而“groups”不显示该用户的组......?!
因此我试图理解:
- 是否有某种组缓存 - LDAP 列表?
- 或者同步是否有可能失败,如果是,如何手动重新启动它?
抱歉,我的问题没有更准确,但我真的不知道从哪里开始......
PS 配置文件
# /etc/ldap/ldap.conf
URI ldap://172.16.1.232
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
# /etc/pam_ldap.conf
base dc=ourdomain,dc=ch
uri ldap://172.16.1.232/
ldap_version 3
rootbinddn cn=admin,dc=ourdomain,dc=ch
pam_password crypt
pam_ldap
并且nsswitch
没有缓存机制,但nscd
或sssd
可能存在于实现缓存的系统上。nscd
要使组缓存无效/刷新,请使用:sssd
要使组缓存无效/刷新,请使用:jopasserat 的评论引出了另一个可能的答案。
该
groups
命令不报告用户的组成员身份。它报告当前进程的组 ID 权限。它仅使用 NSS 将数字组 ID 转换为名称。当用户登录时,从 NSS 获得组成员身份,并使用
setgid
和setgroups
系统调用为用户的初始进程赋予正确的权限。从那里继承的所有进程都继承相同的权限(执行 set-id 程序时除外)。如果配置的权限发生更改,则在用户登录时,现有进程不受影响。您必须注销并再次登录才能获得特权,如果您试图撤销特权,则必须杀死所有用户的进程才能完成工作。
nscd
这样可以增加额外的缓存层来担心,但是预先存在的用户进程实际上是所有配置中都存在的特权缓存。