在 Linux 中,用户可能属于某个组,但该组名称未在/etc
目录中的组文件中列出。如果是,请举几个例子?
答案1
组定义可能存在其他位置,如
nsswitch.conf
:文件系统对象可能属于未在 中或通过任何其他名称服务定义的 UID 或 GID
/etc/passwd
。/etc/groups
就内核而言,这是完全可以接受的,因为无论如何,用户空间都会提供到人类可读名称的映射。在这种情况下,用户空间工具通常会显示数字 ID 而不是名称。另一方面,尽管完全有可能,但对象具有无效的 UID 或 GID 通常表明存在一些重大问题 - 通常,用户被删除而没有对其文件进行适当的处理。在大多数情况下,这种情况是不可接受的,因为如果新用户/组重新使用相关的 UID/GID,而新用户/组现在发现自己拥有来自过去用户的大量文件,则可能会泄露信息...
如果您提到您的实际问题,我们也许能够提供更多帮助......
答案2
有可能某个文件的 GID 未列在组中,如果您从另一台机器导入文件(例如 tar-ball),这种情况经常发生。然后该组会显示为ls
数字,例如 4000。例如
-rw-r--r-- 1 root 4000 0 Dec 24 11:04 foo.foo
(我通过 做到了这一点touch foo.foo; chgrp 4000 foo.foo
)
组文件只是为了方便命名,当然也是为了定义哪些用户属于哪个组。
同样,您可以在/etc/passwd
设置用户时fred
将组 4000 作为数字。
我不确定你是否可以在/etc/groups
[正如 larsmans 指出的那样,NIS 也可能影响用户和组的名称]
我希望这回答了你的问题。
答案3
组成员资格可能定义为国家情报系统而不是/etc/group
。请咨询您的/etc/nsswitch.conf
。