Linux操作系统基于多用户的设计理念,允许多个用户同时使用系统资源。用户是登录系统并使用系统资源的个体,其都有自己的账户和密码。用户组是将众多用户归类为一组。Linux中的用户和用户组是系统安全和权限管理的基础。本文将探讨Linux中用户组的创建和管理。
关于用户的创建与管理是最基本的操作,用户组的删除与修改等,不在本文讨论之列。我们将从用户组(有时简称组)的创建与查询开始讨论。
一、创建组
新安装的centos7系统中,默认存在的组是root组,及其系统组(如bin、sys、Ip、tty、mem等)。
组ID用gid表示,与uid自动编号相同,系统id小于1000,普通组(与普通用户)id将从1000开始编号,添加一个新用户,编号自动加1。如果设置uid(或gid)为2000,新用户将在此基础自动加1进行编号。如果重设一用户gid为1500,新用户仍然在原来的基础上(2000)自动加1。
1.单独创建
groupadd 组名
-g 指定用户组的gid
2.由创建用户产生
useradd 用户名
-g 指定用户组的gid/组名
-G 指定用户附加组名/gid,多个组时用逗号分开
二、组操作
对用户组的常用操作包括:设置组密码、为组指定一名或多名管理员、添加其他用户到组内、把不合适的组成员删除等。不常见操作有对用户组的删除groupdel和对用户组的修改groupmod。
1.指定管理员
gpasswd -A 用户名 组名
如把tangseng(唐僧)设为组管理员
gpasswd -A tangseng tangseng
2.添加成员
在用户组中添加成员有两种方式:root管理员或组管理员
a.由root添加成员
把用户zhang、wang和zhao添加到tangseng组中
(1)把tangseng组作为主组
(2)把tangseng组作为附加组
b.由组管理员添加成员
基本语法:
gpasswd -a 用户名 组名
本案例由组管理员tangseng把tang、song和ming添加到tangseng
su - tangseng
gpasswd -a tang tangseng
gpasswd -a song tangseng
gpasswd -a ming tangseng
3.删除成员
a. 由root删除成员
gpasswd -d 用户名 组名
本案例中把由root管理员把song组员从tangseng组中删除
b.由管理员删除组成员
基本语法:
gpasswd -d 用户名 组名
本案例中把由组管理员tangseng把ming组员删除
gpasswd -d ming tangseng
三、查看组
1.查看用户属于组
a.groups
由命令groups用户名 查看用户属于哪些组
由上图可知:tangseng只属于tangseng组,而tang属于三个组tang、class1和tangseng。在这三个组中,tang这个组是tang用户的主组,而class1和tangseng是附加组。
b./etc/group
由组文件查看组及组成员
由上图可知:第1列是组名,第四列含有用户名的,是第1列组的成员。class1有三个成员,wukong组和wuneng组都含有成员baigujing,tangseng组中含有四个成员。
c.id
由id -g用户名 查看用户的组信息
2.查看组中成员
getent group 组名
由上图可以该组中有四名成员
getent --help
可以查看命令getent的帮助信息。
四、切换组
在Linux系统中,可以通过用户修改,把其主组改变为其他组。原来的主组将不存在,其附加组中也没有了改变前的组。而通过newgrp命令,把附加组中的某一个组切换为主组,不改变用户所占有的组。
1.usermod
我们以用户tang为例,验证改变tang的主组之前后变化
a.查tang主组
由上图可知:tang主组是tang,其gid为5018
b.改变tang主组为class1
usermod -g class1 tang
c.验证tang主组变化
通过改变主组,可看到gid由原来的5018变为现在的5022,组名由原来的tang变为现在的class1。
2.newgrp
常用的用户组之间切换命令是newgrp。通过该命令,可以让用户从附加组中选择一个作为其新的主组。
newgrp命令的基本语法如下:
newgrp [选项] [组名]
其中,组名为要切换到的用户组名称。如果在命令行上没有指定组名,则默认将会进入当前登录用户的主组。
切换原理与功能
一个用户有多个附加组时,通过newgrp切换,把原主组与某一附加组交换:原主组成为附加组,某一附加组成为主组。
下面的案例,我们以wukong为例,进行操作。
a.切换前信息
切换前查看用户的主组与附加组,可看到gid所标志的,就是当前主组
主要查看方法:
(1)id 用户名
(2)getent group 组名
(3)cat /etc/passwd |grep "用户名"
(4)cat /etc/group |grep "组名"
上图是切换主组前的相关信息。我们切换用户wukong,在其家目录中创建目录及文件
b.切换
进行切换newgrp 附加组名
newgrp xiyou
c.验证
再次查看组信息
由上图可以看到切换前后的变化:用户在哪个组中,创建普通文件与目录时,所属组就是哪个组。
由此也可观察到所属组的变化是临时性的,退出切换组状态,仍保持原来的所属组
五、组权限
gpasswd的帮助
1.设密码
gpasswd 组名
2.用户组的权限管理
文件权限:Linux中的每个文件和目录都有所属用户和所属用户组,通过文件权限可以控制用户对文件的访问权限。文件权限包括读取(r)、写入(w)和执行(x)权限,分别对应数字表示为4、2和1。通过chmod命令可以修改文件权限。
文件所属组:每个文件都有一个所有者和一个所属组,所有者是文件创建者的用户,所属组是所有者所属的用户组。通过chown和chgrp命令可以修改文件的所有者和所属组。
特殊权限:除了基本的文件权限外,Linux还支持一些特殊权限,如SetUID、SetGID和Sticky Bit。SetUID权限允许用户在执行程序时以程序所有者的权限执行,SetGID权限允许用户在执行程序时以程序所属组的权限执行,Sticky Bit权限用于限制对某些目录的删除操作。
用户和组的关系:用户和用户组之间有一对多的关系,一个用户可以同时属于多个用户组。用户组可以通过文件权限和ACL(访问控制列表)来控制对文件的访问权限。
系统安全性
a.资源隔离:通过将用户分配到不同的用户组,可以实现资源的隔离。不同用户组之间的文件和目录权限可以相互独立,从而防止用户越权访问和修改资源。
b.访问控制:通过用户和用户组的管理,可以实现对系统资源的精细控制。管理员可以根据需要为不同用户和用户组分配不同的权限,从而限制用户对系统资源的访问。
c.安全审计:用户和用户组的管理可以为系统安全审计提供重要依据。通过记录和监控用户和用户组的活动,可以及时发现异常行为和安全威胁。
d.用户认证:用户和用户组的管理是系统认证和授权的基础。通过用户和用户组的管理,可以实现用户的身份验证和权限控制,保障系统的安全性。