Linux权限
write in front
作者:@ 不进大厂不改名
专栏:@ Linux
作者简介:大一学生 希望能向其他大佬和同学学习!
本篇博客简介:Linux的权限,让你对Linux的理解更加深入,让你更安全地使用Linux。
1.shell命令以及运行原理
我的理解:Linux从广义上来说是一个操作系统,从狭义上说,它是一个核心或者内核(Kernel)。
官方介绍:Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
1.将使用者的命令翻译给核心(kernel)处理。
2.同时,将核心的处理结果翻译给使用者。
比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。如下图:
而我们通常使用的shell外壳具体有一个是bash
2.权限的概念
Linu下一般有两种用户:超级用户(root)、普通用户。
1.超级用户:可以在Linux系统下做任何事情,不受限制。
2.普通用户:Linux下做有限的事情。
3.超级用户的命令提示符是“#”,普通用户的提示符是“$”。
root用户变为普通用户或者从普通用户切换到其他用户
命令:su+[用户名]
然后输入你切换用户的密码
普通用户切换到root用户
命令:su -
然后输入root密码
如何短暂地提升普通用户地权限
我们用sudo加命令就可以了,但是这时一般要输入你的当前用户地的密码。
当然我们敲完后就会发现我们并未被添加到信任名单里,也就无法进行操作
如何添加信任关系
首先我们先要将权限提升到root,然后执行下面的命令。
vim /etc/sudoers
打开文档后找到100行左右的位置
接下来我们按照上面的格式,将要添加的用户名添加进去就行
但是你们可能会遇到无法退出的问题,直接q!直接强制退出,类似于下面的问题
添加成功后就可以暂时提升权限上面的指令就可以使用了。
3.权限管理
文件访问者的分类
1.文件和文件目录的所有者:u(user)
2.文件和文件目录的所有者所在的组的用户:g(group)
3.其他用户:o(others)
文件访问者的分类
这里可能会有同学提出疑问这里的访问者和上面的用户是什么关系?
文件的访问者可以说是一种身份,而用户指的是具体的个人,所以现在就可以理解了,用户可以是上面中的一种或多种身份。即用户可以是所有者(u),也可以是所属组(g),也可以是其他用户(o)
文件类型的访问权限(事物属性)
1.是否可读
2.是否可写
3.是否可执行
这样组合出来就有8种情况了
字符表示
八进制表示
权限符号(读写执行) | 八进制 | 二进制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
- - - | 0 | 000 |
敲出l l指令就可以显示出它们的类型和属性了
这一串字符的前十个我们可以分成三个部分:文件类型、三种身份具有的权限、以及所有者所属组的具体用户。
文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
文件访问权限的修改
我们一般在Linux中使用下面的命令可以修改文件的权限
chmod 选项 权限 文件名或目录名
这里要注意只有root才有修改权限的权力 如果普通用户想要实现这种操作,可以使用短暂提升权限的命令。
格式1:用户符号+/ -/ =权限字符(字符表示)
身份的符号如下:
1.u-拥有者
2.g-所属组
3.o-其他人
4.a-所有人
例如:这里将a.c拥有者的权限从可读可写变为无任何权限。
格式2:用户符号+/ -/ =权限字符(八进制表示)
修改文件的拥有者
命令格式:chown 选项 用户名 文件或者文件目录
这里需要注意的是只有root用户才有修改的权力,如果是普通用户,则需要暂时提升权限,而且如果想递归修改文件的拥有者则需要用-R选项(下面这个例子就把a.c的拥有者改为root了)
修改文件的所属组
命令格式:chgrp 选项 用户名 文件或目录名
当然这还有一种特殊的修改方式,当我们使用chown时用分号,这样就可以指定修改文件的拥有者和所属组了。(下面的例子同时修改了文件的拥有者和所属组)
4.目录的权限
和文件一样,目录也有上面的三种权限
1.可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
2.可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
3.可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
但是这样就会出现一个问题
只要用户具有目录的读写权限,用户就可以删除目录里的文件,而不论这个文件是否有这个文件的写权限(下面这个例子中d.c我们没有写权限,却能删除)
这样显然就很危险,于是Linux中引入了一个粘滞位的概念
粘滞位
它的命令格式如下:
chmod +t 目录名
一个目录被加上粘滞位后,就算我们拥有这个目录的写权限也无法删除了
others的最后一位变成t,此时不能再删除文件了。(这时不管你有没有文件的写权限都不能删除)
当一个目录被设置为粘滞位,则该目录下的文件只能由
1.超级管理员删除
2.该目录的所有者删除
3.该文件的所有者删除
5.权限的总结
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限