用户组管理
概述
每个用户都有一个primary group,系统可以对一个用户组中的所有用户进行集中管理,默认没指定primary group的情况下,会默认创建一个与用户名同名的组并创建为primary group。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
用户组操作需要root用户权限进行
用户组分为三种类型:
- primary group(主属组)
- private group(私有组)
- attached group(附加组)
相关配置文件
用户组信息存放在/etc/group
用户组的信息存放在 /etc/group
文件中,总共四列,通过三个“:”分割。
- 第一列表示组名
- 第二列表示密码(默认是x,密码存放在
/etc/gshadow
文件里) - 第三列表示组GID(group ID),也是唯一的,用户是有UID的,对于用户组来说也有GID,GID也是唯一的。
- 第四列表示“组成员”。
用户组密码信息存放在/etc/gshadow
主要操作
- 增加用户组:groupadd
- 删除用户组:groupdel
- 修改用户组:groupmod
- 查看用户组
1)id group-name
查看用户组的命令
2)grep group-name /etc/group
用户组信息存放在/etc/group,用户组密码信息存放在/etc/gshadow。
命令详解
groupadd命令
使用groupadd
命令添加用户组,会在/etc/group文件中产生一条用户组信息。
示例
groupadd -g 5000
groupdel命令
使用groupdel
命令删除用户组
groupmod命令
使用groupmod
修改用户组。
示例
groupmod -g 1000 newgroup
。
gpasswd命令
使用gpasswd
命令管理用户组密码,可以让某个用户组只能由某个用户管理。
a
:添加用户到用户组d
:从用户组中删除用户r
:清除用户组密码
用户设置密码是为了验证用户的身份,而用户组设置密码主要是用来指定组管理员的。
由于系统中的账号可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。
newgroup命令
使用 newgroup
命令创建临时用户组,例如:newgroup lsj
。创建的用户,默认的拥有人就是创建者,默认的属组就是primary group。该命令新开了一个shell。
其他命令
touch /etc/nologin
:除了root之外的所有用户都限制登录,用户再次登录时无法登录。rm -rf /etc/nologin
:解除用户登录限制。
私有组
当创建用户时,如果没有指定所属组,那么会为该用户创建一个同名的私有组,该组中只有该用户一个成员。因此,经验上建议为用户指定所属组,这样用户就不会拥有私有组了。
用户组中最重要的是primary group。/etc/passwd
文件中的第四列GID表示该用户所属的primary group(主要组)。一个用户只能属于一个primary group,但可以属于多个attached group(附加组)。
使用useradd -g
指定用户的primary group,使用useradd -G
指定用户的attached group。
附加组理论上可以将任何一个用户组作为任何一个用户的附加组,但是不建议将私有组作为某个用户的附加组。
使用id
命令查看一个用户的信息,可以看到该用户的uid和gid,以及该用户属于的所有组。gid表示该用户的primary group,除了gid之外的所有组都是attached group。
例如,id yzq
命令可以查看用户yzq的uid、gid以及该用户所属的所有组。
为了进行用户组的管理,需要切换到root用户。