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

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

/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 的忙碌。


相关文章
|
算法 搜索推荐 Python
Python高级算法——K近邻算法(K-Nearest Neighbors,KNN)
Python高级算法——K近邻算法(K-Nearest Neighbors,KNN)
704 1
|
JavaScript 前端开发 测试技术
【软件使用】postman使用教程
【软件使用】postman使用教程
|
存储 缓存 内存技术
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
钉钉免登(Single Sign-On, SSO)
钉钉免登(Single Sign-On, SSO)
867 0
|
9月前
|
人工智能 安全 算法
多端融合,打造最优落地效果的多模态百炼
本次分享由阿里云智能集团专家介绍多端融合的多模态百炼,涵盖七个方面:1)如何打造最优效果的多模态百炼;2)最新版本在生产力和产品力建设上的进展;3)rap能力升级;4)终端大模型场景探索与实践;5)内容安全工作;6)模型能力增强及生态应用;7)终端模型结合的消费链及手机、PC、车机器人等能力。重点介绍了百炼在多模态模型、效果运营中心、终端AI结合云端AI等方面的创新与优化,以及在内容安全和生态建设中的努力。
426 18
|
存储 大数据 数据挖掘
云计算与大数据:从基础设施到实际应用
云计算与大数据:从基础设施到实际应用
1584 0
|
算法 安全 5G
|
存储 SQL 分布式计算
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
1065 0
|
关系型数据库 定位技术 Python
geopandas中拓扑错误的发现诊断与修复
geopandas中拓扑错误的发现诊断与修复
324 6
|
存储 Java 程序员
汇编语言教程及实例
汇编语言教程及实例