Linux权限
Posted 林 子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux权限相关的知识,希望对你有一定的参考价值。
🔥🔥 欢迎来到小林的博客!!
🛰️博客主页:✈️小林爱敲代码
🛰️博客专栏:Linux之路
🛰️社区: 进步学堂
🛰️欢迎关注:👍点赞🙌收藏✍️留言
目录
💖一、shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为 核心(kernel) ,但我们一般用户,是不能够直接使用kernel的。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。简单理解,就是kernel是你看中的对象,但是你不好意思和她说你喜欢她。这时候就需要媒婆shell 去替你和她说你喜欢她
Shell的最简单定义:命令行解释器(command Interpreter) 主要包含:
1.将使用者的命令翻译给核心(kernel)处理。
2.同时,将核心的处理结果翻译给使用者。
然而我们在操作windows的时候,也不是直接操作windows内核,而是通过windows GUI图形接口,点击,从而完成我们的操作(比如点击我的电脑,就会出现一个界面)。
所以windows 和它的图形界面GUI之间的关系就 相当于 shell 和Linux关系,它们有相同的作用,主要是给用户提供一个与操作系统内核沟通的”桥梁“ 。
打个比方 :
假如你喜欢你的邻居翠花。但你不好意思直接和她说。所以你找到了村里的王婆,让王婆替你去和翠花说。 而翠花收到了你的请求,把你的请求传递给了翠花。翠花收到了你传递给王婆的请求,就会给王婆反馈,是接受你还是拒绝你。此时王婆再把翠花的答案带给你。这里面的王婆就是shell,翠花就是linux内核。
💖二、权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:意为上帝,可以再linux系统下做任何事情,不受限制。
普通用户:只能权限范围内的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
su指令
语法:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
💖三、权限的管理
3.1 文件访问者分类
在linux系统中,我们把文件访问者分为三类。
1.文件和文件目录的所有者:u—User
**2.文件和文件目录的所有者所在的组的用户:g—Group **
3.其它用户:o—Others (除了1和2之外的人)
3.2 文件类型和访问权限(事物属性)
3.2.1文件类型
怎么查看文件的类型和访问权限呢? 很简单,我们只需要在文件所在目录执行ll指令即可。
我们可以看到这里有很多属性。
以第一个为例。每一个所代表的意思如下
我们可以看到普通文件,第一个是用-来表示的,而test2是个目录,第一个是用d来表示的。
所以以下是总结出来的,第一个字符对应的文件类型
字符 | 文件类型 |
---|---|
d | 文件夹 |
- | 普通文件 |
l | 软链接(类似Windows的快捷方式) |
b | 块设备文件(例如硬盘、光驱等) |
p | 管道文件 |
c | 字符设备文件(例如屏幕等串口设备) |
s | 套接口文件 |
文件类型明白了,那么我们再来看看文件的访问权限
3.2.2 文件访问权限
第二个字符开始 rw-是一对。
第一个r 代表read,代表文件具有可读权限。如果为-,则代表不具有可读权限。
第二个w代表write ,代表文件具有可写权限,如果为-,则代表不具备可写权限。
第三个x 代表execute,代表文件具有可执行权限,如果是目录则代表有可进入的权限。如果为-,则不具备该权限。
字符表示 | 说明 |
---|---|
r - - | 只读 |
- w - | 只写 |
- - x | 只能执行 |
r w - | 可读可写不能执行 |
r - x | 可读可执行不能写 |
- w x | 可写可执行不能读 |
r w x | 可写可读可执行 |
- - - | 无权限 |
3.3 访问权限的设置
1. 怎么设置访问权限呢?
那这里我们要先介绍一个指令。
指令1 : chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限(rwx) 文件名
我们的a.txt是具有 rw权限的。那我们来取消掉r权限。
我们输入 : chmod u-r a.txt 意思是去掉 u(用户所属者)的r(可读)权限 。
我们可以发现 wyl不具备 a.txt的r权限了。那么我们用cat命令来读一下a.txt。
它会告诉我们没有权限。
-是去掉权限的意思,那么+就是加上权限的意思。具体的参数表如下。
权限操作符
操作符 | 代表意义 |
---|---|
+ | 向权限范围增加权限代号所表示的权限 |
- | 向权限范围取消权限代号所表示的权限 |
= | 向权限范围赋予权限代号所表示的权限 |
用户代表符号:
符号 | 代表用户 |
---|---|
u | 文件的拥有者 |
g | 拥有者同组用 |
o | 其它用户 |
a | 所有用户 |
当然,我们也可以用八进制来设置
假如我们的 a.txt文件是 :
rw- rw- r–
那我们可以转化成对应的二进制,1代表有该权限,0代表没有该权限。那么就是:
110 110 100
我们转换成8进制就是,664
那么 rwx rwx rwx 对应的8进制就是111 111 111 ,也就是777
我们输入chmod 777 a.txt试试
我们发现a.txt的权限被改成了rwx rwx rwx,那我们再改回664试试。
所以,我们如果嫌 u+r这样改太麻烦,也可以选择用八进制来修改权限
2. 如何修改文件的拥有者?
指令 : chown
修改文件的拥有者
格式:chown [参数] 用户名 文件名
例子:
我们可以发现,本来是拥有者是属于root的,但是把所属者改成了wyl。
注意
如果把拥有者从普通用户给到root,需要在前面加上sudo 提权,还得把当前用户加入到root的信任名单。
3. 如何修改所属组群?
指令:chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
例子:
我们把root所属者的rootfile1.txt和rootfile2.txt的所属组改成了wyl。
3.4 umask
umask的功能
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
举个例子:
我们先用 umask来查看当前掩码
当前的掩码是 0002,那么我们新建一个file.txt文件和dir目录。
掩码我们只用看后三位,也就是002,这是一个8进制数。我们把它转为二进制就是000 000 010。
然后文件的权限码是 0666,我们也看后三位,这也是一个8进制数,我们把它转换为二进制就是 110 110 110
然后我们把掩码对应的 000 000 010取反,得到 111 111 101 ,然后再把这个和权限码进行按位与。
111 111 101
110 110 110
110 110 100
最后得到的结果是 110 110 100,刚好对应我们的file1.txt文件的权限。rw- rw- r–。
那我们再来看看目录文件
目录的权限码是 777,转换成二进制为 111 111 111,然后与 上面已经转换过的 111 111 101进行按位与
111 111 111
111 111 101
111 111 101
最后的结果为 111 111 101,也就意味着目录的创建后的默认权限为 rwx rwx r-x。
修改权限值
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
例子: umask 333
然后我们创建一个文件。
这时候创建后的文件只有可读权限。
3.5 目录的权限
使用sudo 分配权限
# chmod 740 /etc/sudoers
# vi /etc/sudoer
用户切换
普通用户切换至超级用户 : sudo su-
超级用户切换至普通用户: su 用户名
目录权限
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。
目录没有r权限
我们用 chmod u-r dir 去掉dir目录的读权限
然后我们进入目录
进去后我们发现我们压根无法看见文件。这就是目录没有r权限的结果。
目录没有x权限
我们的目录权限是 rwx rwx r-x。 那么我们用 chmod u-x dir把执行权限干掉。
那我们在cd进目录试试。
我们会发现我们无法进入。那我们用ll读它试试。
我们发现,它只能读到里面的文件名,其他信息无法查看。所以目录的x权限决定着你能否进入这个目录。
目录没有w权限
如果我们不想目录的文件被删除,可以去掉它的w权限
那么我们恢复dir的x权限。去掉它的w权限。
然后进入目录删除文件
提示我们无法删除。
但是问题来了,如果我们想再新增文件呢?我们试试能不能新增文件。
提示我们没有权限新增文件。 把目录的w权限去掉,可以限制无法删除该目录的文件,但同时。也无法新增文件了。
如果让一个目录可以新增文件,但不能删除别人的文件,该怎么做呢?
这时候我们就需要一个东西,那就是粘滞位。
当一个目录被设置了粘滞位之后,它只能:
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
所以我们一般让root来设置这个粘滞位。这样除了超级管理员root,没有人可以删除目录。
设置粘滞位的格式: chmod t 目录名
那我们恢复dir目录的写权限。并把它的所有者和所属组设为root,这样普通用户就会o(其他人)的身份操作目录。然后设置一下它的粘滞位。
再用root创建一个文件。
那我们删除一下roofile.txt试试。
我们无法删除这个文件。那我们新增文件试试。
我们发现可以新增文件。那我们试试删除。
我们可以删除属于自己的文件,但不能删除别人的文件。
权限总结🥳:
1. 目录的可执行权限是表示你可否在目录下执行命令。
2. 果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限,但最多也只能看到里面的文件名。
3. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档
以上是关于Linux权限的主要内容,如果未能解决你的问题,请参考以下文章