/etc/group 中缺少一个有效的 Linux 组,但可以在 getent 组中找到

/etc/group 中缺少一个有效的 Linux 组,但可以在 getent 组中找到

一个奇怪的问题。我试图将一个用户(比如 myuser)添加到一个组(linuxadmins),但出现以下错误。

sudo usermod -a -G linuxadmins myuser
usermod: group 'linuxadmins' does not exist

然后我尝试排除故障,但发现在组数据库文件中找不到组,但可以通过getent搜索返回。您可以找到第一行(linuxadmins:x:1000:some_ids) 的返回值和 /etc/group 的转储片段。有人知道这个组来自哪里吗?

[my_sit@myhost /]$ getent group
linuxadmins:x:1000:some_ids
root:x:0:my_sit,other_sit
bin:x:1:bin,daemon
daemon:x:2:bin,daemon

[my_sit@myhost /]$ cat /etc/group
root:x:0:my_sit,other_sit
bin:x:1:bin,daemon
daemon:x:2:bin,daemon

答案1

/etc/group并不是群体信息的唯一来源。

  1. 所有查找首先经过神经胶质细胞缓存守护进程。如果 nscd 缓存了随后被删除的组,它仍会显示出来。

  2. 然后使用配置的模块/etc/nsswitch.conf。“files”模块从 /etc/group 读取,但可能还有其他模块,例如“ldap”、“nis”、“sss”(AD/LDAP)等等。

您可能从网络源或缓存模块中获取此条目。逐个测试已配置的模块(来自 nsswitch.conf),直到找到该组:

getent -s files group linuxadmins
getent -s ... group linuxadmins

相关内容