我已将 bob 加入到许多不同的组,他是我的测试假人,现在我将 bob 设置为一个名为 ftptest 的主组,以及其他几个次要组。
我发出了这个命令cat group
,发现 bob 没有列在 ftptest 组中,但是当再次发出 -g 来设置主组时,系统告诉我没有做出任何更改,尽管 bob 没有出现。
我没有退出并再次登录。
将 ftptest 主组设置为 bob
ftptest:x:1002:bob,userx
[email protected]~/Ubuntu>> su
Password:
# usermod -g ftptest bob
# cat /etc/group
ftptest:x:1002:bob,userx
将次要群组设置为 bob
# usermod -G bob,users bob
# cat /etc/group
ftptest:x:1002:userx
令我感到困惑的是,bob 不再在 ftptest 组,因此我再次发出主要组,并收到此消息。
# usermod -g ftptest bob
usermod: no changes
我已注销并重新登录系统中的两个用户。我在其中进行了更改的用户和 bobs 帐户,但仍然没有在主要组旁边看到 bobs 的名字。
[email protected]~>> cat /etc/group
ftptest:x:1002:userx
但,
[email protected]~>> groups bob
bob : ftptest users bob
cat /etc/group 不应该显示 bob 属于 ftptest 吗?
答案1
用户的主要组存储在 /etc/passwd 中。如果您在 /etc/passwd 中检查 bob 的帐户,您将得到类似以下内容的信息:
$ grep ^bob: /etc/passwd
bob:x:1001:1002:Bob:/home/bob:/bin/bash
从左到右,这些字段依次为:
- 用户名
- 密码占位符(现代系统只在此处放置一个 x)
- 数字 UID
- 数字 GID(主要组)
- 评论字段(人类可读的名称)
- 主目录
- 默认 shell
组字段应显示 1002,这是 ftptest GID。
/etc/group 文件包含次要组。我经常会看到用户的主要组也列在 /etc/group 中,这意味着它既被定义为主要组,又被定义为次要组,但情况并非总是如此。正如您所指出的,使用该group
命令将列出所有组,这是查看用户所属的所有组的好方法。