如果在LDAP上,Linux是否保留组成员的caching? (组与组之间的差异)

我们的用户和LDAPconfiguration正在工作。

我们的服务器使用LDAP来存储用户和组。

# /etc/nsswitch.conf : passwd: compat ldap group: compat ldap shadow: compat ldap 

但是今天我们在LDAP中添加了一个新的组,其中有3个用户,然后添加了其他用户。 3个用户在组中,而不是其他用户。

我们可以通过使用“groups”来看到:更确切地说,“getent group GROUPNAME”显示组中的用户,而“groups”不显示该用户的组… …!

所以我想了解:

  • 是否有某种组的caching – LDAP列表?
  • 或者是否有可能同步失败,如果是的话,如何手动重新启动呢?

对不起,我的问题不是更确切,但我真的不知道从哪里开始…

PSconfiguration文件

 # /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_ldapnsswitch没有caching机制,但是nscdsssd可能存在于实现caching的系统上。

使无效/清除nscd组caching使用:

 sudo nscd --invalidate=group 

使无效/刷新sssd组caching使用:

 sudo sssd_cache -G 

jopasserat的评论导致另一个可能的答案。

groups命令不报告用户的组成员身份。 它报告当前进程的组ID特权。 它仅使用NSS将数字组ID转换为名称。

当用户login时,组成员身份从NSS获得, setgidsetgroups系统调用用于给用户的初始进程提供正确的权限。 所有从那里inheritance下来的进程都会inheritance相同的权限(除了执行set-id程序时)。

如果configuration的权限更改,而用户login,现有的进程不受影响。 您必须注销并再次获取权限,如果您要撤销权限,则必须杀死所有用户的进程才能完成作业。

nscd等,可以添加额外的caching层担心,但预先存在的用户进程实际上是在所有configuration中存在的权限caching。