用户和群组
- 用户
什么是用户,即登录到linux操作系统的账号就是用户。在linux操作系统中账户的类别主要有三类:1、超级管理员(root),在linux中超级管理员的账户是root,这个root账户就类似于windows操作系统中administrator账户。也就是对计算机中软件和硬件有特殊操作权限的用户;2、普通账户(limy)普通账户就是在linux操作系统中为了完成某些任务而建立的一些账户,这些账户都有一个特点需要输入账户和密码才能进入系统。而且每个账户都有一个家目录。3、访客账户(guest)这个guest账户就是,没有任何权限的账户,只能进入系统录入和查看一些最最最基本的东西,实质这个guest账户没有什么作用,在windows里面也有一个访客账户与linux操作系统中的guest账户类似。 - 群组
群主是什么,账户得放在一个集合里面,这个集合就是群组,但是这里的集合指的的一个群组,在操作系统中(不管是windows还是linux都有很多群组)。把具有相同的账户放入到一个组里面,这个组就是这两个账户的群组,有的朋友就要问,我们为什么要这样做呢?因为我们在访问资源(操作系统中计算机的资源)时,可以让这个组里面的所有用户都具有访问权限。也可以对资源访问权限设置群组,对A资源的访问。那么我们就把所有对具有A资源访问权限的用户都放在一个组里面,这时候有另外有一个新建用户,也需要对A资源进行访问的权限,那么我们就可以直接把这个新建用户加入到这个群组里面,这时新建用户就具有对A资源访问的权限了。 - 用户和群组的关系
用户和群组有什么关系,用户属于群组。每一个用户必修有一个归属的群组。
我们举例,比如学生和班级,班级就是群组,学生就是用户,学生是属于班级的,对于这个班级的资源,在这个班级的所有学生都可以进行访问及使用,不是这个班级的学生肯定就不能具有相应的权限。比如这个班级买了一本书,那么这个班级同学是可以对这本书进行阅读(查看)和做笔记(编辑)的权限的,其它班级的同学是无法进行阅读和编辑的,如果需要的话,就需要设置权限。即这个班级就是这本书的所有者。后面我们通过实验来说明。 - 用户管理
用户管理包括以下的管理:
1、用户账号管理;
2、组账号管理;
3、用户/组账号的权限管理;
linux操作系统中文件从何而来?
下面我们用一个图来说明
- 用户账号包含信息
1、用户名;
2、口令:
3、UID:用户唯一标识符;
4、GID:用户组的唯一标识;
5、用户描述信息;
6、用户主目录:用户登录的初始目录;
7、SHELL类型:设置SHELL程序的种类;
口令文件(/etc/passwd)
该文件用户登录时校验用户的登录名、加密的口令数据项、用户ID(UID)、默认的用户分组ID(GID)、GECOS字段、用户登录子目录以及登录后使用的SHELL
改文件的每一行保存一个用户的资料,而用户资料的每一个数据项之间采用冒号“:”分割。
这里也可以重置limy账户的密码。具体操作下次讲解 - 登录名
注意它的唯一性,它的长度一般不超过32个字符,它们可以包括冒号和换行之外的任何字符。登录名要区分大小写。放在/etc/passwd文件的开头部分的用户是系统定义的虚拟用户bin、daemon - 加密的口令
当编辑/etc/passwd文件来创建一个新账号时,在加密口令字段的位置要放一个星号(*)。这个星号防止未经授权就使用该账号,指导设置了真实的口令为止。
如要要重置limy账户的密码,我们只需要在/etc/passwd文件中找到limy:后的字段,将x删掉即可。前提是只有root账户才有权限操作。 - UID
是32位无符号整数,它能表示从0到4294967296的数值。建议在可能的情况下将站点上的最大UID号限制在32767。root的UID为0。UID在整个机构中应该是唯一的 - GID
组的ID是一个32位整数,GID 0是给root的组保留的。GID1通常指的是名为“bin”的组,GID2指的是“daemon”组。 - GECOS字段
通常用来定义每个用户的个人信息。 - 用户的登录子目录
每个用户都需要有地方保存自己的配置文件。这个地方就叫做用户登录子目录。要禁止没有主目录的用户登录,可以把/etc/login.defs中的CREATE_HOME设置为no。
- 登录SHELL
用户上机后运行的shell,此处出现的是默认的shell,大多数情况下是/bin/bash
操作命令
1、添加新用户
格式:
useradd [参数] 用户名
参数:
-u UID //指定用户的UID值;
-g 组名 //指定用户所属的默认组;
-G-u 组名 //指定用户附加组;
例子
我们已经创建好了zhangsan这个用户,细心的朋友可以看大我们还没有设置密码,下面我们看看密码的设置
在前图中我们可以看出,UID为1001,GID也为1001。
现在我们在按照指定的方式创建一个账户。
这里我们创建一个wangsi的账户,细心的朋友可以看到,wangsi这个账户归属在zhangsan这个组里面。
我们又没有创建zhangsan这个组哒,好了,其实我们在linux中创建账户时,如果没有指定组,linux会自己更具账户名创建一个用户组。就如同zhangsan账户,就有了后面-g,后面有zhangsan这个组,
-d 路径 //指定用户主目录(如果没有指定就是/home/xxxx)
-e 时间 //指定用户账户有效日期(YYY-MM-DD)
-s 类型 //指定默认的shell类型
-m //建立用户主目录
-M //不建立用户主目录
2、设置用户口令
格式:passwd [选项] [用户名]
d (delete) //删除用户口令
-l (lock) //暂时锁定指定的用户账户
-u (unlock) //解除指定用户账号的锁定
-S (statue) //显示指定用户账号状态
在这里插入图片描述
passwd zhagnsan //设置口令
passwd -d zhangsan //删除用户口令
passwd -l zhangsan //锁定账户
passwd -u tom //解除账户
passwd -S tom //显示账户
3、修改用户信息
usermod [参数] 用户名
参数:
-l 新用户名 当前用户名 //更改用户名
-d 路径 //更改用户主目录
-G 组名 //修改附加组
-L 用户账号名 //锁定用户账号(不能登录)
-U 用户账号名 //解锁用户账户
这里我们就将zhangsan账户改为了wanmazi。
我们在用wanmazi账户进行登录
后面的更改目录,改组,我就不一一示范了。
4、删除用户
格式
userdel [参数] 用户名
参数:
-r //同时删除用户主目录
实例:
删除wanmazi后,这个账号也被删除了。
5.切换用户身份
格式: su [-] [用户名]
比如:su - //切换到超级用户
su limy //切换到limy账户
6.组账号管理
1、组的分类
私用组:创建用户时自动创建的组
标准组:可以包含多个用户的组
组账户文件在我们根目录下的(/etc/group)
组名:组的标识符号
口令:(密码)
GID:组的唯一标识符
组的成员:
我们现在来看看(/etc/group)文件包含了linux组的名称和每个组中的成员列表。
上图中,每一行代表了一个组,其中包含有四个字段;
组名;
被加密的口令(已经废弃,很少使用);
GID;
成员列表,彼此用逗号隔开(注意不要加空格)。
为了避免与厂商提供的GID发生冲突,一般从GID100开始分配本地组。
7、组账号的建立
格式:group [参数] 组名
参数:-g GID //指定新建的组的GID值;
-r //建立伪用户组(1-999);
实例:
groupadd g2
groupadd -r g3
groupadd -g 6400 testg
创建一个gid为6400组名为testg的组
8、修改组的信息
格式:
groupmod [参数] 组名
参数:
-n 新组名 原组名 //修改组的名字
-g GID //修改组的GID
实例
groupmod -n group2 g1
groupmod -g 860 g2
9、添加/删除组成员
格式
gpasswd [参数] 用户名 组名
参数:
-a 用户名 //向指定组添加用户
-d 用户名 //从指定组中删除用户
gpasswd -a limy root
gpasswd -d limy root
10、删除组
格式:
groupdel 组名
实例:
groupdel g3
如果我们要查询当前用户属于那个组的话,我们可以使用以下的这个命令。
groups [用户名]
实例:
groups (显示当前用户所属组)
group root (显示root用户的所属组)
文件和目录的权限管理
定义:是一种限制用户对文件操作的规则
我们所说的文件,权限,访问规则,这里我并说一下。
文件是我们存储在计算机中的资料呈现的一种形式,这种形式的呈现是按照一定的信息的规律形式呈现的。
权限是我们对文件的操作(读、写、执行)限制,也就是让谁(用户)对这个文件有一个什么样的操作。
访问规则是我们对文件针对于计算机用户(或者群组)设定的规则。也就是谁(用户)或者群(拥有相同群组名字的用户)的访问规则设定。
在linux系统中文件访问权限通常分为三类
读: r或4
写: w或者2
执行: x或1
权限值的设置方法
字符表示方法
r–: 只读
-w-: x写
–x: 执行
rw-: 读写
-wx: 写和执行
r-x: 读和执行
rwx: 读写执行
—: 无权限
权限值的设置方法
命令:chmod
更改文件的权限
我们可以查看当前目录的权限
也可以查看当前用户对指定目录的权限
其实在上图还可以看出,这个文件test文件,属于那个用户和属于那个用户组。
我们如何来更改指定文件的权限。
chmod [操作对象] [操作符] [权限] 文件名
操作对象
u表示“用户(user)”,即文件或目录的所有者。
g表示“同组(group)用户”,即与文件属主相同组ID的所有用户。
o表示“其他(others)用户”。
a表示“所有(all)用户”,他是系统默认值。
操作符号
+添加某个权限
-取消某个权限
=设置唯一权限
所表示的权限可用下述字母的任意组合
r可读
w可写
x可执行
chmod o+w /root/test
这里的o是other的意思
补充说明
在我们查看文件的权限时候,有十个字符的位置,第一个字符(从左往右)先不管它,后面我在说第一个字符表示什么。
我们将剩下的9个字符分为三组,每组三个字符。从左往右第二个、第三个、第四个,这三个是文件的所有者拥有的权限,是红色线框框起来的部分,在从左往右数,第五个,第六个,第七个是文件的所有者所在的群组中账户对文件的权限,是蓝色线框框起来的部分,从左往右第八个,第九个,第十个,是other对文件的操作权限。在上图中是黄色线框框起来的部分。
我们在操作的时候,可以给文件设置用户的权限,用户所在群组的权限,以前其他用户对文件的权限,就像我们上面的那条命令,chmod o+w /root/test
这个是什么意思呢?就是给o(other)赋予w(写)的权限。我们要给那个赋予什么权限也就是需要+(加)后面的权限就可以了。如果想要减少权限呢,那就使用-(减)就可以了。如下
chmod o+w /root/test
chmod u-w /root/test
chmod g-rx /root/test
chmod o=rx /root/test
这里o表示other;u表示user,g表示group(用户所在的群组)。
权限值的表示方法。
上面我们说的是,三个字符一个组,比如当前用户的权限是第二,第三,第四位表示。当前用户所在的组是第五,第六,第七位表示。其他用户是第八,第九,第十位。我们可以发现的规则是,他们都是占三位,那么可以用另外的一种表示方式,也就是二进制,在数学上我们说的数值都是从右往左数的,那么我们可以明确的是,这里的权限是三位一组。安装二进制表示方法中,1表示有,0表示无,比如100这个时候,我们就说有read(读的权限),010表示write(写的权限),001表示executable(可执行)
我们可以对应为数字来学与记,
r:4即 (100)
w:2即 (010)
x:1即 (001)
我们也可以将这些权限进行组合,比如
rw:6即 (110)
rx:6即 (101)
wx:6即 (011)
rwx:7即 (111)
0表示没有任何权限。
chmod 764 /root/test
chmod 777 /root/test
chmod 600 /root/test
其实,我们学会了数值法表示,会更加方便些。因为可以根据数值的具体某位表示出u,g,o。
权限值的表示方法
chown
功能:改变文件拥有者,并可以一并修改文件所属组群。(超级用户使用
格式:
chown <用户名> <文件名>
chown limy /root/test
这个时候,我就将/root/test文件的所有者改为了limy用户。
chgrp
功能:更改文件所属的组(超级用户使用)
格式:chgrp <组名称> <文件名>
chgrp limy /root/test
这个时候,/root/test文件所属的root组,现在已经变为了limy群组里面了。
本篇内容主要讲用户群组和用户,以及用户,角色,权限。
在我们日常学习与工作中,用到的时间非常多,尤其是学习信息安全的同学们,使用linux操作系统比使用windows操作系统要方便很多,但是对于不熟悉liunx操作系统的同学,可以反复的去练习创建文件,删除文件,创建用户,删除用户,将文件加入到某个群组,将文件从某个群组中移除,给特定的用户对文件赋予特定的操作权限。
下面进行总结知识点:
本节主要讲解了以上的命令,需要同学们反复的练习。