Linux 有效用户组(effective group)与初始用户组(initial group)(参考鸟哥私房菜)

还记得每个使用者在他的 /etc/passwd 里面的第四栏有所谓的 GID 吧?那个 GID 就是所谓的『初始用户组 (initial group) 』!也就是说,当用户一登陆系统,立刻就拥有这个用户组的相关权限。 举例来说,我们上面提到 dmtsai 这个使用者的 /etc/passwd 与 /etc/group 还有 /etc/gshadow 相关的内容如下:

[root@www ~]# usermod -G users dmtsai  <==先配置好次要群组
[root@www ~]# grep dmtsai /etc/passwd /etc/group /etc/gshadow
/etc/passwd:dmtsai:x:503:504::/home/dmtsai:/bin/bash
/etc/group:users:x:100:dmtsai  <==次要群组的配置
/etc/group:dmtsai:x:504:       <==因为是初始群组,所以第四字段不需要填入账号
/etc/gshadow:users:::dmtsai    <==次要群组的配置
/etc/gshadow:dmtsai:!::

 

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

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

那么在这个例子当中,因为我的 dmtsai 账号同时支持 dmtsai 与 users 这两个用户组, 因此,在读取/写入/运行文件时,针对用户组部分,只要是 users 与 dmtsai 这两个用户组拥有的功能, 我 dmtsai 这个使用者都能够拥有喔!这样瞭呼?不过,这是针对已经存在的文件而言, 如果今天我要创建一个新的文件或者是新的目录,请问一下,新文件的用户组是 dmtsai 还是 users ?呵呵!这就得要检查一下当时的有效用户组了 (effective group)。

groups: 有效与支持用户组的观察

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

[dmtsai@www ~]$ groups
dmtsai users

dmtsai 用户同时属于 dmtsai 及 users 这个两个用户组,而且, 第一个输出的用户组即为有效用户组 (effective group) 了。dmtsai 有效用户组为 dmtsai 。如果以 touch 去创建一个新档,例如: 『 touch test 』,文件的拥有者为 dmtsai ,而且用户组也是 dmtsai 。

[dmtsai@www ~]$ touch test
[dmtsai@www ~]$ ll
-rw-rw-r-- 1 dmtsai dmtsai 0 Feb 24 17:26 test

newgrp: 有效用户组的切换

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

[dmtsai@www ~]$ newgrp users
[dmtsai@www ~]$ groups
users dmtsai
[dmtsai@www ~]$ touch test2
[dmtsai@www ~]$ ll
-rw-rw-r-- 1 dmtsai dmtsai 0 Feb 24 17:26 test
-rw-r--r-- 1 dmtsai users  0 Feb 24 17:33 test2

 

此时,dmtsai 的有效用户组就成为 users 了。  newgrp 这个命令可以变更目前用户的有效用户组, 而且是另外以一个 shell 来提供这个功能,所以,dmtsai 这个使用者目前是以另一个shell 登陆的,而且新的 shell 给予 dmtsai 有效 GID 为 users 。如果以图示来看就是如下所示:

newgrp 的运行示意图
图 1.3.2 、newgrp 的运行示意图

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

加入一个用户组有两个方式:一个是透过系统管理员 (root) 利用 usermod 加入,如果 root 太忙了而且你的系统有配置用户组管理员,那么你可以透过用户组管理员以 gpasswd 帮你加入他所管理的用户组中。

posted @ 2012-10-15 22:32  大兔子_快跑  阅读(2270)  评论(0编辑  收藏  举报