Linux Group 管理

关于群组的文件也有两个:/etc/group和/etc/gshadow, /etc/group文件每一行的结构为:组名、群组密码、GID、此群组支持的账号id。/etc/gshadow文件的结构为:组名、密码、群组管理员账号、该群组的所有用户账号(与/etc/group文件里面的最后一栏一样)。

有效群组和初始群组

当用户登录时,系统会读取/etc/passwd文件里面用户的信息,里面的gid此时就是用户的初始群组,也是用户的有效群组,如果用户想要切换群组以及查看当前自己所能支持的群组的话,那么可以使用下面的命令:

1
2
3
4
5
6
7
8
查看用户当前所能支持的群组
$ groups
为用户添加支持群组
$ usermod -G 群组名称 用户名称
设置用户的初始化群组
$ usermod -g 群组名称 用户名称
有效群组的切换
$ newgrp 群组名称

注意,执行newgrp命令后,用户是以另外一个shell登录的,而且新的shell赋予了用户新的有效gid,虽然用户的环境设定不会有影响,但是使用者的群组权限将会被重新计算,需要注意的是,由于取得的是一个新的shell,所以如果想要回到原来的shell,可以执行exit回到原来的shell!

与群组管理相关的指令有groupadd、gropumod、groupdel

groupadd

groupmod

groupdel

为什么 mygroup 可以删除,但是 vbird1 就不能删除呢?原因很简单,『有某个账号 (/etc/passwd) 的 initial group 使用该群组!』 如果查阅一下,你会发现在 /etc/passwd 内的 vbird1 第四栏的 GID 就是 /etc/group 内的 vbird1 那个群组的 GID ,所以啰,当然无法删除~否则 vbird1 这个用户登入系统后, 就会找不到 GID ,那可是会造成很大的困扰的!那么如果硬是要删除 vbird1 这个群组呢? 你『必须要确认 /etc/passwd 内的账号没有任何人使用该群组作为 initial group 』才行喔!所以,你可以:

1:修改 vbird1 癿的 GID ,或者是:

2: 初除 vbird1 这个使用者。

gpasswd:群组管理员功能

群组管理员可以对群增加或删除人员(只能执行这个功能)。群组管理员可以不是该群组的成员,具体执行指令如下