Linux 组 - 管理表

Linux 组 - 管理表

使用红帽企业 Linux 7.9
Shell = sh

当我执行... getent group <group-name>-- 命令 1时

例如。

>>> getent group grp1
    grp1:VAS:67458 usr3,usr2,usr1

>>> groups usr4
    usr4: unixuser grp1 

>>> getent group grp1
    grp1:VAS:67458 usr4,usr3,usr2,usr1  

结果不是最新的,响应中缺少某些用户。

当我执行... groups <user-name>-- 命令 2时

它返回用户所属的正确组,并且命令 1 现在将该用户包含在getent之前丢失的命令的组中

请帮助我了解发生了什么以及是否有更好的方法来列出给定 UNIX 组的成员。

/etc/nsswitch.conf

在此输入图像描述

答案1

从 Linux 的角度来看,您使用的命令没有问题。但这里发生的情况是 linux 不知道usr4或他们的组,直到提示使用 查找它groups usr4

您的系统配置为使用 nisplus nsswitch.conf,这意味着另一台计算机上有一个存储用户和组的数据库。此类桥实际上从不涉及将整个数据库复制到本地 UNIX 计算机上,特别是因为某些目录服务器可以容纳数千个用户。

那么会发生什么,groups usr4触发 nisplus 去搜索用户usr4并评估他们的组。这更新了信息的本地缓存,更新了后续的信息getent group grp1

但是,getent group grp1不会触发 nisplus 发现目录服务器上该组中的每个可能的用户。该操作可能成本极高,并会吸引数千名用户。

不幸的是,您唯一的选择是询问远程服务器(AD 服务器)或要求系统管理员寻找您。

如果您在远程目录服务器上具有 LDAP 访问权限,那么您可以构建 ldap 查询并使用 openldap 或类似工具来运行查询。

相关内容