Linux----权限
这里写目录标题
- <font color="ff00ff">1. shell命令以及运行原理
- <font color="ff00ff">1.1 那为什么我们不直接使用内核呢?
- <font color="ff00ff">2. Linux权限的概念
- <font color="ff00ff">2.1 su 用户名
- <font color="ff00ff">3. Linux权限管理
- <font color="FF00FF"><font size="4">3.1 文件访问者的分类(人)
- <font color="FF00FF"><font size="4">3. 2 文件类型和访问权限(事物属性)
- <font color="FF00FFF"><font size="4">3.21 文件类型:
- <font color="FF00FF"><font size="4">3. 22 访问权限:
- <font color="FF00FF"><font size="4">3.3 总结
- <font color="ff00ff">4. chmod
- <font color="ff00ff">5. chown
- <font color="ff00ff">6. chgrp
- <font color="ff00ff">7. file
- <font color="ff00ff">8. umask
- <font color="ff00ff">9. 目录的权限
- <font color="ff00">9.1 重要
- <font color="ff00ff">10 那有没有办法不让zs删除xaq的文件呢?
1. shell命令以及运行原理
Linux是一个操作系统,我们把它叫做核心,但我们不可以直接使用核心,我们是通过核心的外壳程序,也就是shell来与内核沟通。
1.1 那为什么我们不直接使用内核呢?
从技术角度,Shell的最简单定义:命令行解释器
主要包含:
1. 将使用者的命令翻译给核心进行处理。
2. 同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入C盘的操作,我们通常是双击C盘盘符
shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户,bash就是我们常用的外壳程序
2. Linux权限的概念
Linux下有两种用户:超级用户(root) 和 普通用户
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
2.1 su 用户名
功能:切换用户。
例如,要从root用户切换到普通用户 xaq,则使用su xaq,普通用户不需要切换代码
要从普通用户 xaq 切换到root 用户则使用su root(root可以省略),此时系统会提示输入root用户密码的口令。
3. Linux权限管理
3.1 文件访问者的分类(人)
1. 文件或文件目录的所有者:u----User (u是缩写)
在所有者的所在的组的用户 (所属组):g—Group
其它用户:o—Others(其它人)
3. 2 文件类型和访问权限(事物属性)
3.21 文件类型:
d:文件夹
-:普通文件
3. 22 访问权限:
读( r ):Read对文件而言,具有读取文件内容的权限
对目录来说,具有浏览该目录信息的权限
写(w):Write对文件而言,具有修改文件内容的权限
对目录来说具有删除移动目录内文件的权限
执行 (x):execute对文件而言,具有执行文件的权限
对目录来说,具有进入目录的权限
— 表示不具有该项权限
这里的d和 - 是文件类型,而d和 - 之后的就是就是访问权限,就是这个test对于
所有者,所属组,和其它人分别是
所有者:它是可读可写可执行
所属组:它是可读可写可执行
其他人:它是可读不能写可执行
这里的访问权限是出去首字母的文件类型,然后3个放一起看,而且必须是r w x的顺序,不能 r x w什么之类的,就像其他人他没有写权限 - 就代表他不具有该项权限
这里的2 后面的第一个xaq就是目录所有者,而所属组也是xaq,这是我名字缩写,你们也可以设置自己的,这就是文件访问者,但还存在真实的人,真实的人就是root(超级用户)或普通用户
比如这里的test目录的所有者和所属组都是普通用户(xaq),而xaq相当于是个角色,它扮演成了这个目录的所有者和所属组,使它们都变成xaq
3.3 总结
权限:权限就是角色+事物属性,正常是文件访问者+事物属性,但是文件访问者只能是超级用户或普通用户,而我们把超级用户或普通用户统称为角色,所以权限就是角色+事物属性(文件类型和访问权限统称为事物属性)
4. chmod
功能:设置文件的访问权限
+ : 就是增加访问权限
- : 就是减少访问权限
= : 就是赋值访问权限
a :所有用户,全称是all
此时就给test.c加了可写权限,就是可以修改文件内容了。
1. 只有文件的拥有者和root 才可以改变文件的权限
张三不可以改文件的权限
我是张三我不可以去改xaq这个目录的权限,只能回到xaq或root改,root无视权限
前面说的x权限是文件可执行,但是在Linux下能执行包括两个条件,一是具有x权限,二是文件真的可以执行
这里的test.c具有x权限但是依然不可以执行因为它没有进行gcc编译,所以一个文件要执行就必须进行gcc编译和有x权限
这里文件的所有者和所属组都是xaq,但是user,group,other和我当前用户进行身份对比时,只依次对比一次,我当前用户是xaq,跟我的user先对比,对比成功就不会继续对比了,如果不成功再与group对比
5. chown
功能:更改文件或目录的拥有者
这里我想把test.c文件的拥有者改成zs,只能是root用户,要是普通用户的话需要sudo提权
6. chgrp
功能:更改文件或目录的所属组
这里我想把test.c文件的所属组改成zs,只能是root用户,要是普通用户的话需要sudo提权
这样也可以改权限,但是这可以一下改变多个,但是之前的
这里第二个指令g+x就不会被执行
总结:八进制改变权限可以一次性改变 u,g,o的所有权限,而+就只能改变一个。
7. file
功能:识别文件的类型。
8. umask
功能:
查看或修改文件掩码
超级用户默认掩码值为0022
普通用户默认为0002
新建文件夹默认权限=666
新建目录录默认权限=777
但实际上创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask&(~umask)
所以最终权限 (缺省权限)
新建文件夹默认权限=664
新建目录录默认权限=775
也就是我们只要修改文件或目录的掩码就可以改变文件或目录最终权限也叫缺省权限
9. 目录的权限
可执行权限: 如果目录没有可执行权限,则无法cd到目录中.
可读权限: 如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件.
换句话来讲,就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限
这好像不太科学,xaq创建的⼀个文件,凭什么被你zs可以删掉?
首先在该目录下test.c文件,对于其他人来说是没有w的权限的,只有r
我们回到上级目录,里面有xaq这个目录,也是用户
我们给xaq这个目录的other加上rwx权限
不加x,zs进不去xaq这个目录
不加r,zs看不了xaq目录里的文件信息
9.1 重要
结论:切换到zs这个用户,然后进入xaq这个目录,可以看到里面的文件并没有w权限,但是我们可以删除它,也就是删除该目录下的文件与你本身文件的权限无关,与你文件所在目录的权限有关
其实前面也知道文件的w权限是能否修改文件的内容,与能否删除该文件无关,但是上面的结论把文件换成目录也是一样的,也就是说切换到zs这个用户,然后进入xaq这个目录,可以看到里面的目录并没有w权限,但是我们可以删除它,也就是删除该目录下的目录与你本身目录的权限也无关,与你目录所在目录的权限有关
10 那有没有办法不让zs删除xaq的文件呢?
因此引出粘滞位的概念
1. 粘滞位只能给目录设置,不能给普通文件设置
2. 任何用户在当前目录下设置粘滞位后,只允许当前目录的拥有者删除当前目录下的文件或目录,所属组和other,都无法删除
3. root可以无视粘滞位,因为他是超级用户,可以理解成他开挂了
如果这个目录没有x权限就会变成T,粘滞位是给other的,如果有x权限,粘滞位就是t
此时就删除不了了。