13.1.3 关于群组:有效与初始群组、groups, newgrp

文章详细介绍了Linux系统中/etc/group文件的结构和作用,包括群组名称、群组密码、GID和成员账号。同时,解释了初始群组和有效群组的概念,以及如何通过newgrp指令切换有效群组。此外,提到了/etc/gshadow文件在管理群组管理员和账户加入群组中的角色。
摘要由CSDN通过智能技术生成

/etc/group 文件结构

                               

这个文件每一行代表一个群组,也是以冒号“:”作为字段的分隔符号,共分为四栏,每一字段的意义是:

1. 群组名称: 就是群组名称。同样用来给人类使用的,基本上需要与第三字段的 GID 对应。

2. 群组密码: 通常不需要设置,这个设置通常是给“群组管理员”使用的,目前很少有这个机会设置群组管理员。 同样的,密码已经移动到 /etc/gshadow 去,因此这个字段只会存在一个“x”而已;

3. GID: 就是群组的 ID 。我们 /etc/passwd 第四个字段使用的 GID 对应的群组名,就是由这里对应出来的。

4. 此群组支持的帐号名称: 我们知道一个帐号可以加入多个群组,那某个帐号想要加入此群组时,将该帐号填入这个字段即可。 举例来说,如果我想要让 dmtsai 与 alex 也加入root 这个群组,那么在第一行的最后面加上“dmtsai,alex”,注意不要有空格, 使成为“root:x:0:dmtsai,alex ”就可以。

下图中, root 的 UID 是 0 ,而 GID 也是 0 ,去找/etc/group 可以知道 GID 为 0 时的群组名称就是 root 。 至于密码的寻找中,会找到/etc/shadow 与 /etc/passwd 内同帐号名称的那一行,就是密码相关数据。

                    

                             图13.1.1、帐号相关文件之间的 UID/GID 与密码相关性示意图

有效群组(effective group)与初始群组(initial group)

GID就是所谓的“初始群组”。当使用者一登陆系统时,立刻就拥有这个群组的相关权限。举例说,上面提到的dmtsai这个使用者的/etc/passwd与/etc/group还有/etc/gshadow相关的内容如下:

在 /etc/passwd 里面,dmtsai 这个使用者所属的群组为 GID=1000,搜寻一下 /etc/group 得到 1000 是那个名为 dmtsai 的群组。这就是 initial group。因为是初始群组, 使用者一登陆就会主动取得,不需要在 /etc/group 的第四个字段写入该帐号的!

但是非 initial group 的其他群组可就不同了。举上面这个例子来说,我将 dmtsai 加入 users这个群组当中,由于 users 这个群组并非是 dmtsai 的初始群组,因此, 我必须要在/etc/group 这个文件中,找到 users 那一行,并且将 dmtsai 这个帐号加入第四栏, 这样dmtsai 才能够加入 users 这个群组。

那么在这个例子当中,因为我的 dmtsai 帐号同时支持 dmtsai, wheel 与 users 这三个群组,因此,在读取/写入/可执行文件案时,针对群组部分,只要是 users, wheel 与 dmtsai 这三个群组拥有的功能, 我 dmtsai 这个使用者都能够拥有。

groups: 有效与支持群组的观察

如果我以 dmtsai 这个使用者的身份登陆后,该如何知道我所有支持的群组呢? 直接输入groups就可以。

在这个输出的讯息中,可知道 dmtsai 这个用户同时属于 dmtsai, wheel 及 users 这三个群组,而且, 第一个输出的群组即为有效群组 (effective group) 了。 也就是说,我的有效群组为 dmtsai 。此时,如果我以 touch 去创建一个新文件,例如: “ touch test ”,那么这个文件的拥有者为 dmtsai ,而且群组也是 dmtsai。

newgrp: 有效群组的切换

那么如何变更有效群组呢?就使用 newgrp 。不过使用 newgrp 是有限制的,那就是你想要切换的群组必须是你已经有支持的群组。举例来说, dmtsai 可以在 dmtsai/wheel/users 这三个群组间切换有效群组,但是 dmtsai 无法切换有效群组成为 sshd 。使用的方式如下:

此时,dmtsai 的有效群组就成为 users 了。我们额外的来讨论一下 newgrp 这个指令,这个指令可以变更目前使用者的有效群组, 而且是另外以一个 shell 来提供这个功能的,所以,以上面的例子来说, dmtsai 这个使用者目前是以另一个 shell 登陆的,而且新的 shell 给予dmtsai 有效 GID 为 users 就是了。如果以图示来看就是如下所示:

                           

                                                     图13.1.2、newgrp 的运行示意图

虽然使用者的环境设置(例如环境变量等等其他数据)不会有影响,但是使用者的“群组权限”将会重新被计算。 但是需要注意,由于是新取得一个 shell ,因此如果你想要回到原本的环境中,请输入 exit 回到原本的 shell 。

/etc/gshadow

刚刚讲了很多关于“有效群组”的概念,另外,也提到 newgrp 这个指令的用法,但是,如果/etc/gshadow 这个设置没有搞懂得话,那么 newgrp 是无法动作的。

这个文件内同样还是使用冒号“:”来作为字段的分隔字符,而且你会发现,这个文件几乎与/etc/group 一模一样。 如果密码栏上面是“!”或空的时,表示该群组不具有群组管理员。至于第四个字段也就是支持的帐号名称。这四个字段的意义为:

1. 群组名称

2. 密码栏,同样的,开头为 ! 表示无合法密码,所以无群组管理员

3. 群组管理员的帐号 (相关信息在 gpasswd 中介绍)

4. 有加入该群组支持的所属帐号 (与 /etc/group 内容相同!)

以系统管理员的角度来说,这个 gshadow 最大的功能就是创建群组管理员。那么什么是群组管理员呢?由于系统上面的帐号可能会很多,但是我们 root 可能平时太忙碌,所以当有使用者想要加入某些群组时, root 或许会没有空管理。此时如果能够创建群组管理员的话,那么该群组管理员就能够将那个帐号加入自己管理的群组中。可以免去 root 的忙碌。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯西极限存在准则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值