提出问题:
有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,为了让多个用户能够访问文件,需要批量授权。如果有10个用户的话,就需要授权10次,显然这种方法不太合理;能否找到一种手段,快速完成对批量用户的授权呢?
一、用户组
用户组是具有相同特性用户的逻辑集合。
通过组的形式使得具有相同特性的多个用户能够拥有相同的权限,便于管理;
每一个用户都拥有自己的私有组;
同一组内的所有用户可以共享该组下的文件;
每一个用户组都会被分配一个特有的id号:gid。
有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限。
一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理。
另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。
这就是用户组,将用户分组是openEuler系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。
思考:请列举一个现实生活中例子,反映用户组的原理。
若干学生分班到一起,就是典型的用户组的例子。
此时,如果要宣布课表,不用逐个通知每个学生,只用公布一个班的课表,大家就都知道上课信息了。
通过定义班级,在很大程度上简化了学生的管理工作。
二、用户组文件
openEuler下管理用户组信息的文件有以下两种:
/etc/group:组信息文件。
在这个文件中,保存着用户组的所有信息,每一行记录代表一个用户组;
将用户分组是对用户进行管理及控制访问权限的一种手段,每个用户都属于一个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
/etc/gshadow:组信息加密文件。
在这个文件中,会保存用户组加密信息,比如说用户组管理密码就保存在此(与/etc/shadow文件相似);
与/etc/group文件互补,对于大型服务器来说,拥有很多用户和组,会针对这些用户和组来生成一些复杂的权限模型,此时设置并管理密码就显得尤为重要。
用法示例1:查看用户组信息
[root@localhost ~]# cat /etc/group
test04:x:1003:
user:x:1004:
usergroup:x:1005:
/etc/group文件每一行结构用冒号分成4个部分,第一个部分是组名;第二部分是群组口令;第三部分是GID;第四部分是此群组支持的账号名称。
用法示例2:查看用户组加密信息
[root@localhost ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
/etc/gshadow文件每一行结构用冒号分成4个部分,第一个部分是组名;第二部分是群组口令;第三部分是群组管理员账号;第四部分是此群组支的所属账号名称。
三、用户组GID
用户组ID(Group ID,简称为GID)和用户UID类似,作为唯一标识符来标示系统中的一个用户组:
在添加账户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组;
GID与UID都会将0赋予给超级用户或者具有超级用户的用户组(也就是root用户组);
系统会预留一些较前的GID给虚拟用户(也称为系统用户)。
可以通过输入命令行id [option] [user_name],查看用户组gid以及每个用户组下拥有的用户数量。
用法示例1:新建一个用户zhangsan,并查看该用户所属的组信息
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# id zhangsan
用户id=1000(zhangsan) 组id=1001(zhangsan) 组=1001(zhangsan)
四、用户组分类
用户组分为三类:
普通用户组:可以加入多个用户;
系统组:一般加入的用户为系统用户;
私有组:也称为基本组,在创建用户时,如果没有为其指明所属用户组,则会为该用户定