Linux权限管理(用户和权限之间的关系)
Linux系列
文章目录
- Linux系列
- 一、Linux下用户类型
- 二、普通权限的基本概念
- 2.1、Linux中权限的类别
- 2.2、Linux中权限对应的三种身份
- 2.3、文件权限的标识
- 三、文件权限设置
- 四、修改文件属主和属组
- 4.1、chown修改文件的属主
- 4.2、修改所属组
- 五、文件掩码
- 六、目录权限
一、Linux下用户类型
Linux下分为两种用户:
1、超级用户:超级用户就是我们配置好环境后默认的用户类型,它也叫root用户(对标Windows下的管理员)
2、普通用户:普通用户则是我们在超级用户下自己创建的,为了平时学习和工作方便,我们可能需要多个用户身份相互配合共同完成某个项目。
然而制定规则的,往往不会被规则所约束,这里的超级用户就是如此,下面的讲解我们会多次提到。
我们需要新学一个指令:whoami查看当前用户
超级用户:
普通用户:
至于如何在超级用户下创建新的用户(普通用户)以及如何进行用户间身份的切换我们已经在上篇博客中介绍过了,不会的可以去看一下。
二、普通权限的基本概念
2.1、Linux中权限的类别
权限针对文件 | 权限针对目录 | |
---|---|---|
r(读) | 表示是否可以查看文件内容 | 表示是否可以(ls)查看目录中存在的文件名称 |
w(写) | 表示是否可以更改文件的内容 | 表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir) |
x(执行) | 表示是否可以开启文件当中记录的程序,一般指二进制文件 | 表示是否可以进入目录中(cd) |
2.2、Linux中权限对应的三种身份
1、文件所有者(User):文件的创建者或拥有者。
2、用户组(Group):与文件所有者同属一个组的用户。
3、其他用户(Others):不属于文件所有者和用户组的所有其他用户。
注:以上三种身份均都是相对于具体文件来说的,并不是绝对的。例如:root用户相对于A文件来说它是A文件的拥有着,相对于B文件来说它是其他用户。
2.3、文件权限的标识
我们可以使用ll指令来查看文件权限信息。
在指令篇我们介绍了,下面两行信息的首字母代表了文件类型,接下来我们看剩余部分表示什么:
注:文件所以者及所属组下面我们会对他们进行详细分析,这里先认识即可。
接下来我们从代表权限的字符为开始,进行归纳:
上图权限分为三个一组,对应不同的身份。每组的三个字符对应着该处的三个权限:读、写、执行。
1、r w x:文件所有者权限
2、r - x:文件所属组用户权限
3、r - x:其他用户权限
在上面我们有讲过 r w x分别代表的含意,而这里‘ - ’的意思就是不具备该权限。
每个字符对应的权限位都由两种状态---------具备/不具备,所以我们一般使用二进制来表示该权限位的状态:1表示具有该权限位对应的权限,0表示不具有该权限位对应的权限。将他们三个为一组进行划分则对应了一个八进制数。
Linux字符表示:
Linux表示 | 说明 |
---|---|
r - - | 只读 |
- w - | 仅可写 |
- - x | 仅可执行 |
r w - | 可读、可写 |
r - x | 可读、可执行 |
- w x | 可写、可执行 |
r w x | 可读、可写、可执行 |
- - - | 无权限 |
八进制表示:
权限符号(读、写、执行) | 八进制 | 二进制 |
---|---|---|
r - - | 4 | 100 |
- w - | 2 | 010 |
- - x | 1 | 001 |
r w - | 6 | 110 |
r - x | 5 | 101 |
- w x | 3 | 001 |
r w x | 7 | 111 |
- - - | 0 | 000 |
三、文件权限设置
指令:chmod
语法:# chmod [选项] 权限模式 目标文件
功能:增加或者减少目标文件所有者的权限
常用选项:-R:递归设置权限 (当文件类型为文件夹的时)
权限模式:就是该文档需要设置的权限信息
注意点:如果想要给文件设置权限,操作者要么是root 用户,要么就是文件的所有者
chmod命令权限值的设置格式有两种:
1、 利用用户表示符和+/-=进行权限设置
+ : 向权限范围增加权限代号(符号)所表示的权限
- : 向权限范围取消权限代号所表示的权限
= : 向权限范围赋予权限代号所表示的权限
用户符号 :
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
使用:
当前所在root用户下liang文件初始权限信息如下图所示,接下来我们使用指令对它的权限进行修改。
命令:chmod u+x liang 我们给拥有者对应的权限位增加一个可执行权限,如下:
命令:chmod o-r liang 我们删除相对于文件来说的其他人的读权限,如下:
这里只是演示一下指令的使用,其他的大家可以自己尝试。
2、利用三位8进制数字进行权限设置
结合上面我们讲的权限与八进制之间的对应关系,这里我们挑几个直接能看出来的,给大家演示。
操作前:
chmod 000 liang 0代表无权限,这里就是将三种身份对应的权限全部删除,如下:
chmod 664 liang 将拥有者和所属组权限位设置为 r w - ,其他人权限位设置为 r - - ,如下:
四、修改文件属主和属组
这里先简单叙述一下:首先我们要知道,为什么对一个文件来说会存在三种身份的用户。比如说腾讯吧,他所实行的就是赛马机制,让多个小组同时做一款软件,说白了就是内卷。这时后我们就需要防止其他小组查看我们的代码,但又不能拒绝本组内的成员查看,然而文件拥有者又只能存在一个,所以这时我们就需要将小组成员都归为一个组,给这个小组的成员分配,他们需要的权限,而对于不属于这个小组的当然就归为其他人了。
4.1、chown修改文件的属主
作为实习生的你离职了,这时需要将你维护的文件资源交给别人。
基本语法:# chown [-R] 文件新的拥有者名称 文件(可配合路径操作)
作用:更改文件的所属用户
选项:-R 代表递归修改文件的属主
接下来的演示为了方便给大家展示,我们利用的是普通文件进行操作的,所以未使用到-R选项,
当前文件拥有者:
chown ltn liang 将liang文件的拥有者修改为用户ltn:
4.2、修改所属组
基本语法:# chgrp [-R] 新文件组名称 文件
功能:更改文件的所属用户组
选项:-R 代表递归修改文件所属组
当前文件所属组:
chgrp ltn liang 将文件liang的所属组修改为ltn:
五、文件掩码
在讲解掩码之前我们首先要学会查看,权限掩码。
umask指令 功能:查看或修改文件掩码
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
这里第一个0大家可以把他理解为代表八进制的意思,余下三位分别对应着三种身份的权限。
我们们接着看,当我们新建文件时,初始的权限设置.
普通文件和目录文件:
将他们都转化为八进制表示:
目录文件dir:755
普通文件test.txt:644
而默认规定的:
新建文件夹默认权限=0666
新建目录默认权限=0777
这和我们看到的并不一致,这是因为,你所创建的文件和目录,还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask 。
修改权限掩码:
在这里我们也可以修改权限掩码,大家可以通过多次修改掩码,计算权限位来验证这块说法。
六、目录权限
目录文件的三种权限的结果如下:
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看该目录下的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中。
这时就造成了一个问题,当两个用户在同一路径下工作时,虽然我无法查看你的文件内容,但是我只要拥有这个共享目录的写权限,我就可以将你的文件删除。为了解决这个问题,我们引入了粘滞位的概念。
粘滞位
当设置在目录上的粘滞位时,就意味着只有文件的所有者可以删除或重命名该目录中的文件。标志位用 t 显示在其他用户权限的位置
注意事项:
1、目录的可执行权限是表示你可否在目录下执行命令。
2、如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
3、而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。