一个奇怪的问题。我试图将一个用户(比如 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
并不是群体信息的唯一来源。
所有查找首先经过神经胶质细胞缓存守护进程。如果 nscd 缓存了随后被删除的组,它仍会显示出来。
然后使用配置的模块
/etc/nsswitch.conf
。“files”模块从 /etc/group 读取,但可能还有其他模块,例如“ldap”、“nis”、“sss”(AD/LDAP)等等。
您可能从网络源或缓存模块中获取此条目。逐个测试已配置的模块(来自 nsswitch.conf),直到找到该组:
getent -s files group linuxadmins
getent -s ... group linuxadmins