欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 【Linux 学习计划】-- 权限

【Linux 学习计划】-- 权限

2025/5/18 3:39:14 来源:https://blog.csdn.net/2302_80023639/article/details/147959655  浏览:    关键词:【Linux 学习计划】-- 权限

目录

权限是什么

权限的本质

权限(用户)的修改

权限的匹配机制

目录的权限

初始权限(文件和目录)

粘滞位

结语


权限是什么

在现实世界中就有权限的概念,也就是,一部分人能做但是其他没有相关身份的人做不了

举个例子,爱某艺的会员,当你充了会员之后,那么有很多需要会员才能看的剧你就能看了,但是这并不对非会员开放

这就是权限

那么放在Linux中就是,一个文件(或者目录),你有相关的权限,你在能对这个文件执行相关的操作

权限的本质

权限的本质就是:角色 + 事物本身的属性

角色的概念

在Linux里,我们有角色这个概念,我们可以用su指令(或者su -)进行切换角色

比如我直接su,然后默认切换成root,而我们root也叫做超级用户,root可以在Linux里面为所欲为,一句话,权限只是用来限制普通人的,但是root显然不是普通人

最后还可以不切换身份,直接sudo提权

身份的概念

而我们在权限章节里面,有一个身份·的概念:

拥有者,所属组,other

我们来说一下拥有者,其实就是这个文件是谁的

所属组也是一种身份,而不是拥有者也不是所属组的就是other

(可能会有人疑惑为什么要有所属组,试想一下,如果我们这时候要将一个文件分享给另一个人的话,如果没有所属组,那么我们就只能将other的权限全部打开,这就意味着如果这时候你的竞争对手很坏的话,那你就完蛋了,而现在我们可以将另一个人变成所属组,那么other能不能看得到全部取决于你了)

事物本身的属性

最后来讲一讲这个,其实很好理解,你可以在leedcode上面看电影吗?显然不行,因为leedcode使用来刷题用的

所以事物有没有特权,取决于他的身份,他有了符合条件的身份之后才能做特殊的事情,其次就是,这个事物本身是可以支持做这些特殊的事情的

(你在爱某艺上面充再多你也不能在上面刷算法,因为爱某艺本来就不是用来刷算法的)

权限(用户)的修改

在修改之前,我们需要知道权限在文件中是长什么样的:

首先我们看到蓝色的框框,这个就是文件(或目录,下文会重点讲)权限,而红色框框分为左右两个,其实就是拥有者和所属组(other并不需要标识,因为不是拥有者也不是所属组的就是other)

而我们的文件权限一共可以分为三个部分:

如上图,分为三个部分,分别对应拥有者、所属组、other的权限

每一个身份对应的权限分为三个:rwx

rwx 三个分别代表读权限、写权限、可执行权限

读写权限很容易理解,就是你能不能读这个文件和能不能对这个权限进行写入、修改内容操作

至于可执行,则是比如 .cpp 文件,需要通过g++操作变成对应可执行文件之后才能执行对应内容,或者是,Linux下一切皆文件,我们的指令就是可执行文件,我们所有的指令都是可执行的

而想要执行一个文件,需要有可执行权限的同时,还需要这个文件本身可执行

权限的修改相关操作指令

首先,因为权限分为三种身份,所以我们修改的时候也需要指明对应的角色来修改(当然不全是,下文会讲到二进制的方式修改权限,这种就不需要指明身份了)

身份分为:u(user拥有者)、g(所属组)、o(other)、a(all,代表一次性对上面三种身份同时进行操作)

而我们对应修改的指令则是 chmod

举个例子:

chmod u-x,o-x big.txt

chmod u+x big.txt

chmod g-rw big.txt

chmod a+rwx big.txt

诸如此类

同时我们还可以用二进制的方式进行权限的修改

指令同样还是chmod

rwx,三个权限,我们可以看作三个二进制为,也就是111,那么rw-(-代表没有)也就对应110,而111对应的10进制值就是421

比如rw-,对应的值就是6

最后我们有三个身份,也就是三组rwx,所以我们可以直接对三组进行修改

比如我们想让拥有者和所属组有读写权限,而other则只能读,那么我们就可以这样写

chmod 664 filename

权限身份的修改

一个文件有拥有者、所属组、other

而我们是可以对其进行修改的,但是只有对拥有者和所属组的操作,因为不是他两的就自动是other

修改拥有者:chown

修改所属组:chgrp

举个例子,我们要将一个文件的拥有者换成root(所属组也是一样的):

sudo chown root filename

sudo chgrp root filename(修改所属组)

当然chown还有一种特殊用法,也就是,如果你想要同时修改拥有者和所属组的话,你可以直接这样:

chown  name1:name2  filename

权限的匹配机制

首先我们来看一下这张图

对于big.txtx这个文件来说,拥有者和所属组都是hjx

但是拥有者什么权限都没有,而所属组什么权限都有

这时候如果hjx想读这个文件的话,会发现读不了,什么都干不了

这是因为,我们的系统会先看,你是不是拥有者,不是的话再去看是不是所属组,不是的话就是other了

但是这时,我们系统看到,我们是拥有者了之后,那就认定了,你有没有权限,他不管

这就是权限的匹配机制,只会匹配一次

目录的权限

上文我们一直讲的都是文件的权限,但其实目录和文件是不一样的

r:代表你能不能查看这个目录里面的文件(比如cd进目录之后能不能ls)

w:代表能否对目录里的文件进行增删改

x:能否 cd 进入目录

初始权限(文件和目录)

创建文件的起始权限:664

创建文件的起始权限:775

为什么是这样的呢?其实是有原因的

首先,新建文件夹默认权限=0666,新建目录默认权限=0777

而我们在Linux里面有一个指令叫做umask,也叫做权限掩码

权限 = 起始权限 &(~umask)

也就是说,我们的权限是由umask决定的,先对其进行取反,然后再用起始权限与上,就是最终的权限,换句话说,如果我们此时将umask修改成0777的话,那么初始的不管是文件还是目录,权限都会是000

因为0777取反之后,对应位置就是全0,那么&的时候,就会全部变成0

粘滞位

粘滞位是长这个样子的:rwt(也就是将原来的x换成t)

假想一下,你现在想要创建一个文件,然后你想和另一个人共享这个文件,那么你只能创建一个目录,将other的权限全部放开

为什么说只能这么做呢,因为单单对文件权限进行操作是没有用的,不是你的文件,你虽然没资格用,但是你可以删啊,因为删文件取决于目录,就好比,虽然这个东西不是我的,但是你为什么要把它放在我家里?

但是这样的话,就有一个隐患,你和另一个人可以看,但是所有人都可以看,因为大家都是other,而且不光可以看,还能删

所以解决办法就是粘滞位,也就是:

chmod o+t 目录名字

粘滞位的作用就是,你想看,无所谓,这个不归我管,但是你不能删,删除不了

结语

这篇文章到这里就结束啦!!~( ̄▽ ̄)~*

如果觉得对你有帮助的,可以多多关注一下喔

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词