我们的用户和组LDAPconfiguration正在工作。
我们的服务器使用LDAP来存储用户和组。
# /etc/nsswitch.conf : passwd: compat ldap group: compat ldap shadow: compat ldap
但是今天我们在LDAP中添加了一个新的组,其中有3个用户,然后添加了其他用户。 3个用户在组中,而不是其他用户。
我们可以通过使用“groups”来看到:更确切地说,“getent group GROUPNAME”显示组中的用户,而“groups”不显示该用户的组… …!
所以我想了解:
对不起,我的问题不是更确切,但我真的不知道从哪里开始…
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_ldap和nsswitch没有caching机制,但是nscd或sssd可能存在于实现caching的系统上。
使无效/清除nscd组caching使用:
sudo nscd --invalidate=group
使无效/刷新sssd组caching使用:
sudo sssd_cache -G
jopasserat的评论导致另一个可能的答案。
groups命令不报告用户的组成员身份。 它报告当前进程的组ID特权。 它仅使用NSS将数字组ID转换为名称。
当用户login时,组成员身份从NSS获得, setgid和setgroups系统调用用于给用户的初始进程提供正确的权限。 所有从那里inheritance下来的进程都会inheritance相同的权限(除了执行set-id程序时)。
如果configuration的权限更改,而用户login,现有的进程不受影响。 您必须注销并再次获取权限,如果您要撤销权限,则必须杀死所有用户的进程才能完成作业。
nscd等,可以添加额外的caching层担心,但预先存在的用户进程实际上是在所有configuration中存在的权限caching。