每一个使用者在他的 /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:!:: |
可是非 initial group 的其它群组可就不同了。举上面这个样例来说,我将 dmtsai 增加 users 这个群组其中,因为 users 这个群组并不是是 dmtsai 的初始群组,因此, 我必需要在 /etc/group 这个文件里,找到 users 那一行。而且将 dmtsai 这个账号增加第四栏。 这样 dmtsai 才可以增加 users 这个群组啊。
那么在这个样例其中,由于我的 dmtsai 账号同一时候支持 dmtsai 与 users 这两个群组。 因此,在读取/写入/执行文件时。针对群组部分,仅仅要是 users 与 dmtsai 这两个群组拥有的功能。 我 dmtsai 这个使用者都可以拥有喔!这样瞭呼?只是,这是针对已经存在的文件而言, 假设今天我要创建一个新的文件或者是新的文件夹,请问一下。新文件的群组是 dmtsai 还是 users ?呵呵!这就得要检查一下当时的有效群组了 (effective group)。
groups: 有效与支持群组的观察
假设我以 dmtsai 这个使用者的身份登陆后。该怎样知道我全部支持的群组呢? 非常easy啊,直接输入 groups 就能够了。注意喔。是 groups 有加 s 呢!结果像这样:
[dmtsai@www ~]$ groups
dmtsai users
|
也就是说。我的有效群组为 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 |
尽管用户的环境配置(比如环境变量等等其它数据)不会有影响,可是使用者的『群组权限』将会又一次被计算。 可是须要注意,因为是新取得一个 shell 。因此假设你想要回到原本的环境中,请输入 exit 回到原本的 shell 喔!
既然如此,也就是说。仅仅要我的用户有支持的群组就是可以切换成为有效群组。好了, 那么怎样让一个账号增加不同的群组就是问题的所在啰。
你要增加一个群组有两个方式,一个是透过系统管理员 (root) 利用 usermod 帮你增加,假设 root 太忙了并且你的系统有配置群组管理员,那么你可以透过群组管理员以 gpasswd 帮你增加他所管理的群组中!