`id` 和 `/etc/group` 应该如何读取?

DJC*_*mmy 2 users user-management groups

这是“为什么用户不是其私人组 (UPG) 的成员?”的后续问题。尽管第一个问题并不是理解这个问题所必需的。


这个命令id看起来很清楚...

test@test ~ $ id test
uid=1000(test) gid=1000(test) groups=1000(test),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),129(sambashare)
Run Code Online (Sandbox Code Playgroud)

test它显示(或它的 UPG)的 UID 和 GID ,然后另外列出该用户test所属的所有组。


那么应该怎样/etc/group读呢?

test@test ~ $ less /etc/group | grep test
adm:x:4:syslog,test
cdrom:x:24:test
sudo:x:27:test
dip:x:30:test
plugdev:x:46:test
lpadmin:x:113:test
test:x:1000:
sambashare:x:129:test
Run Code Online (Sandbox Code Playgroud)

开头的组名很清楚,数字就是GID;然后列出小组成员的姓名。但为什么倒数第二行不是test:x:1000:test表明 test:x:1000:用户test是该组的成员test

额外问题:x第二列中的是什么

小智 5

答案就在你的问题中

[id] 显示 test 的 UID 和 GID(分别是其 UPG),然后另外列出用户 test 所属的所有组。

您所询问的线路:

test:x:1000:

test用户 是test组的成员。这是在 中定义的/etc/passwd。中的组/etc/passwd定义了用户的“主要”组test。附加或补充组在 中定义/etc/group:在这种情况下,test用户也是admcdromsudo等的成员。

另请参阅

至于“为什么?”,恐怕这可能是一个UNIX标准。也就是说,它是在近 50 年前以这种方式创建的,并且一直都是这样做的。