为用户设置主要组和后续组

为用户设置主要组和后续组

我已将 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命令将列出所有组,这是查看用户所属的所有组的好方法。

相关内容