当前位置: 首页 > news >正文

【Linux】Linux下权限的理解

前言:在之前我们已经对基本的指令进行了深入的学习,接下来我将带领大家学习的是关于权限的相关问题。在之前,我们一直是使用的【root】用户,即为“超级用户”,通过对权限的学习之后,我们就会慢慢的切换到普通用户模式下去进行操作。


本文目录

(一)权限的概念

(二)Linux下用户分类

2.1用户分类

2.2 用户之间的切换

 2.3文件属性

2.4文件访问者的分类(人)

2.5用户与访问者之间的联系

(三)文件权限

3.1文件权限值的表示方法

(四)文件访问权限的相关设置方法

4.1权限设置的方法

1.用户表示符+/-=权限字符

2.三位8进制数字

4.2初始【Permission denied】

4.3普通用户使用sudo提权

1.添加普通用户为信任用户

4.4 chown指令

4.5chgrp指令

4.6 file指令

(五)Linux下三个重要权限

5.1 目录权限

5.2 默认权限

a)文件的“起始权限”与“默认权限”

b)umask权限掩码

c)最终权限计算方法

5.3 粘滞位

a)前情摘要

b)如何添加粘滞位防止恶意删除

c)常见问题分析

(六)总结


(一)权限的概念

在正式学习权限之前,我们还是先对它的概念有一定的了解,这样能让我们带着一定的认知去进行接下来的学习。那么什么是权限呢?

  • 一方面简单点来说就是限制人的,即允不允许我们去做,限制我们的行为,对其进行约束;
  • 其次就是访问的对象可能天然就没有这种“属性”权限,我们也可以这样去看待 权限 = 人 + 事物(文件)属性(rwx)

接下来,我就带大家一起去探索“权限”的有关知识!!!


(二)Linux下用户分类

2.1用户分类

因此,基于上述讲到这种情况,在Linux下就衍生出了两种用户——超级用户(root)和  普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

2.2 用户之间的切换

既然Linux下提供了两种不同的用户,大家可能就会好奇,这两者之间是否可以互相的切换呢?

  • 答案当然是可以的,在linux下用户之间是很灵活的,支持互相进行切换。

接下来第一件事就是大家先创建一个普通用户,如果大家用的还是root用户,从今天开始就可以慢慢的去切换为普通用户了。

  • 1.第一步,打开xshell,点击右上角的带有+号的文件:

  •  2.第二步:输入相应的信息根据提示

  •  3.第三步:再次点击右上角的文件符号

  •  4.找到刚才自己创建的,然后点击进去,就可以看到如下界面:

  •  5.最后就是输入密码即可创建完毕:

  •  6.最后大家再到相应的普通用户下,大家可以【whoami】进行查看,如果还是root,则表示创建失败了:

以上便是相应的创建的过程。。


在正式的进行操作之前,还要带大家认识一个指令,即---【su】指令。

  • 【su 】是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。

su 命令的基本格式如下:

  • # su [选项] 用户名

选项:

  • -:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
  • -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
  • -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
  • -m:和 -p 一样;
  • -c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。

接下来,我们正式介绍用户切换的几种模式:

第一种:普通用户—>root

  • 当我们使用:【su】注意,当我们切换时是需要用到密码的

  •  当我们使用【su -】时,,我们可以发现还是完成了相应的功能:

  •  那么两者之间什么区别呢?细心的小伙伴可以已经发现了:

 因此,我们可以发现二者之间的区别:

【su】和【su -】的区别

  • 注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。

第二种:root—>普通用户

  • 当我们想要从root用户切换成普通用户,这一步很简单,从刚才那个时刻,只需要按下【Ctrl + D】 或者【 exit】即可

第三种:普通用户—>普通用户

对于普通用户之间的切换,要切换到其他的用户下,就需要知道别人用户的密码,在实际情况下,我们是无法知道,那么是不是就无法切换了呢?

  • 当然可以切换,我们可以借助【root】当我们的跳板,因为【root】为超级用户呀!它不受任何约束。我们自己在创建一个用户来举例说明:

以下就是第二种创建普通用户的方法:

  • 我们创建的这个用户,就模拟为别人创建的(此时,我们并不知道它的密码),那么当我们想要切换到他的用户下时可以怎么做呢?具体如下:

 2.3文件属性

接下来,我要插入一点其他知识,即为——Linux的文件属性,上面我简单提过一点,这里我用代码具体给大家说明。

  •  在【linux】下,不使用文件后缀区分文件类型,而是通过用文件属性中的第一列的第一个字符来区分文件类型。

 对于每行第一个为文件类型,那么【linux】下有哪些文件类型呢?具体如下:

  • d:文件夹,文本,可执行文件,归档文件等
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

接下来我们针对前两个,我通过代码带大家见识见识。

ls -l /dev/vda1

  •  解析:这里以【b】开头,表示的是云服务器设置的一块虚拟磁盘
 ls -l /dev/tty0 -1

  •  解析:这里的开始是以【c】开头的,表示显示器或者终端。

通过以上,未来我们该如何看待这个后缀呢?

  • a.后缀这是随你的心意,你想用就用,可以展示给别人看
  • b.我们可以将后缀做成文件名的一部分

说到这里可能还有的小伙伴会有疑问?接下来我们在举个例子来进行形象的说明:

  • 首先,我们在当前的【myfile.c】中写入相应的数据,紧接着当我们去执行它时,它也能够正确的跑起来 :

  •  当我们想改动可执行文件【a.exe】把它改成不同的后缀,看它是否还能执行成功,具体如下:

 通过上述我们不难发现,无论当我们怎么去改都可以正常的运行成功,这叫什么呢?在这里我们的程序和后缀无关。

  • 但是当我们改变源文件的后缀时,结果是否还跟刚才一样呢?

  •  因此,综合我举的例子大家可以发现,在【Linux】下使用的时候,我们依然是有文件的类别的,但当我们用gcc编译一个源代码,当它的后缀不一样时它就会报错。因此,大家注意我们谈的是【linux】下不用标识文件来描述文件类型,这个【linux】下指的是操作系统,操作系统看待文件时不以文件名作后缀,但是今天我们用的是【gcc】这个软件去执行时会报错,因为【gcc】这个软件也是人为写的。

到此,大家明白了吗?

2.4文件访问者的分类(人)

对于上述的不管是【root】啊还是普通用户都是具体的用户,接下来我要讲的则是“角色划分”---对于一个被创建出来的文件,创建之后总会去访问它的,不然何必多此一举,此时在【Linux】下访问者分为三类:拥有者、所属组、other

  • 文件和文件目录的所有者:u---User(中国平民 法律问题)
  • 文件和文件目录的所有者所在的组的用户:g---Group(不多说)
  • 其它用户:o---Others (外国人)

大家可能对文件的拥有者和other这两个概念比较能懂,但是好奇的是为什么还要搞个【所属组】呢?接下来我们解释一下所属组,首先讲解一下用户组的概念。

  • 用户组就是一组用户的集合,类似于大学里的各种社团。那为什么要把用户放入一个用户组中呢?
  • 这么做当然是为了方便管理。大家仔细想想,如果我有 100 位用户,而这 100 位用户对同一个文件的权限是一致的,那我是一位用户一位用户地分配权限方便,还是把 100 位用户加入一个用户组中,然后给这个用户组分配权限方便呢?不言而喻,一定是给一个用户组分配权限更加方便。

给一个文件区分所有者、所属组和其他人,就是为了分配权限方便。就像笔者买了一台电脑,那我当然是这台电脑的所有者,可以把我的读者加入一个用户组,其他不认识的路人当然就是其他人了。分配完了用户身份,就可以分配权限了,所有者当然对这台电脑拥有所有的权限,而位于所属组中的这些学生可以借用我的电脑,而其他人则完全不能碰我的电脑。

因此综上所述,在现实中,绝对不是所有的用户都使用 root 身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级。

2.5用户与访问者之间的联系

在上述,我们讲到了用户可分为两种:

  • root用户
  • 普通用户

访问者可分为三种

  • 拥有者
  • 所属组
  •  other

那么它们之间存在什么关系呢?为什么还要这么分呢?

  • 对于root【超级用户】和普通用户来说,他们都是具体的人,而对于访问者来说,他们是属于一种角色,上述我也提过。但是对于人来说会扮演着不同的角色,例如:在学校我们扮演着学生的角色,在家我们扮演着父母孩子的角色,此时给大家更新博客时则是扮演的笔者的角色。
  • 所以在人生中我们扮演这各种各样的角色,但是对于【linux】却是它扮演的角色可以理解为只有一种,因为它权限最大嘛!!

(三)文件权限

上述对于文件的类型说明了有哪些,但是对于后面的还没有,接下来我给大家具体的唠唠:

  •  在文件类型之后的,可以按照上面那样划分,我们可以三三分为一组,具体可以看下图这样:

 而对于每三位,三个字符的位置的含义时确定的,分别为:

  • 第一位:表示读
  • 第二位:表示xie
  • 第三位:表示执行

那么对于上图的【myfile。txt】文件的拥有者有哪些权限呢?

  • 具有读,具有写,不具有可执行权限

那么基本权限有哪些呢?

  • i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • iv.“—”表示不具有该项权限

3.1文件权限值的表示方法

对于权限的表示方法,我们给出以下两组,大家需要记住。

a)字符表示方法

 b)8进制数值表示方法


(四)文件访问权限的相关设置方法

在正式的操作之前,我们先将一个指令,这个指令就是拿来修改权限的。

a)chmod

  • 功能:设置文件的访问权限
  • 格式:chmod [参数] 权限 文件名

常用选项:

  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

4.1权限设置的方法

接下来我们来讲解如何去设置文件的访问权限,主要是有两种方法:

  • 用户表示符+/-=权限字符
  • 三位8进制数字

1.用户表示符+/-=权限字符

首先,对于下面的【tmp】文件,我们可以看到它任何的权限都不存在,这时当我们要去对其设置权限时应该怎么做呢?

 首先是对于要修改身份的用户符号,也就是我们在上面说到的【拥有者】、【所属组】、【other】

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

其次对其有哪些设置:

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

接下来,我们一一列举:

  • a)给拥有者添加【读】的权限—— r

  •  b)给所属组者添加【读】的权限—— r

  •  c)给other添加【读】权限——r

  •  对于,【w】和【x】都是一样的,在这里我只举一个,其余大家下来可以多多练习:

 此时会发现一个问题,对于一个什么都没有的文件来说,像我上述这样一个一个的去加是不是不太高效啊,那么有没有一种比较高效点的方法呢?答案肯定是有的,即可以连续设置权限

首先,我们可以看到【tmp】是什么权限都没有的。

  •  a)给拥有者添加【读、执行】的权限—— r和x

  •  b)给所属组添加【写、执行】的权限—— w和x

  •  c)给other添加【读、写】的权限—— rw

 到这里我们还是可以会觉得这样也有点麻烦,我们可以一次性就给它们设置好吗?答案当然也是可以的

  • a)同时给拥有者设置——读和写权限;给所属组同时设置——写和可执行权限;给other同时设置——读和可执行权限

  •  b)给拥有者添加【读、写、执行】和给所属组添加【读、写、执行】和给other添加【读、写、执行】的权限—— rwx、rwx、rwx

 上述写法,我们可以写成这样(是不是又可以偷一点懒了)

 你上面一个劲的说增加,怎么没有删除呢?有的有的,这就给出删除的方法

  • a)就紧跟上面那个,当我们全设置后怎么删除呢?我们直接给出偷懒的方法

  • b)那么对于不是全部都设置的呢?我们该怎么做,其实啊跟增加的方法一样的,只是把【+】改为【-】即可

 


2.三位8进制数字

除了上述方法之外,我们还有一种方法,那就是依靠8进制来进行表示,具体怎么做呢?我们下面就给出

除了上面这种通过字符来进行设置的方式,还有一种更加简便的形式,那就是使用八进制来进行相应的设置,对于每一组八进制所对应的权限在上面的图片里面,大家如果不记得了可以再去看看

  • a)给拥有者、所属组、other都添加【读】的权限—— 444

  •  b)给拥有者、所属组、other都添加写的权限—— 222

  •  c)给拥有者、所属组、other都添加可执行的权限—— 111

  •  d)将拥有者、所属组、other的所有权限都添加上—— 777

  •  d)最后,那么我们的删除用8进制可不可以实现呢?当然是可以的:只需所有的都赋值为---000

 到此,以上就是两种详细的设置权限的方法。二者之间的区别我也给大家讲述了,这里在复述一遍加强大家的记忆:

  • 用符号方式表示的话相比直接用8进制来的会慢一点,但是不会存在覆盖的问题:
  • 用8进制设置的话,虽然相对来说比较简便,但是存在覆盖的问题
  • 因此,基于上述的两种情况,对于不同的场合可能需要不同的方法来表示,因此大家两种方法都应该能够掌握。

4.2初始【Permission denied】

首先,不知道各位小伙伴知不道知道这个什么意思呢?(对于英语好的同学就没必要看我的翻译了哈)

  • 它的意思为:权限被拒绝
  • 出现的原因的是:没有权限进行读、写、创建文件、删除文件等操作。

我们还是结合代码来进行查看,当我们想要给一个没有任何权限的文件进行操作时,会成功吗?:

  •  上述读不可以,那么往里面追加可以吗?具体如下:

  •  那么这样的情况不可以,那么大家是否想过对于【root】是否还可以呢?接下来我们尝试一下

 到此,大家就应该能够明白权限拒绝具体什么意思了吧!到此,又会引申出一个问题,那就是,当我什么都没有时,我们是否可以进行提权操作呢?答案当然是可以,接下来就给大家讲解提权 


4.3普通用户使用sudo提权

sudo:是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。

接下来我们进行举例说明。

  •  当我们使用非root用户,且不在信任列表中,sudo命令进行提权,输入的是用户的密码,而不是root的密码。当没有添加用户到信任列表中,用户就无法进行sudo:

 

1.添加普通用户为信任用户

  • 接下来给大家讲解配置的步奏,此时需要我们先切换为root用户,然后在一个配置文件目录下的信任列表文件里进行修改

  • 修改需要联系管理员,紧接着进入【sudoers】这个文件中

 

  • 然后可以看到进入了【sudoers】这个文件中。vim默认进入时命令模式,此时我们要切换【末行模式】,按下【shift +】进入,然后输入相应的【/all】

  •  输入完之后按下回车键,没找到的话按下键盘中的↓一直寻找到这句话。可以看到我已经在root的信任列表中了,我们可以将【zp】也添加进去(大家还没添加之前这里应该只有一个root)

 

  • 找到那行命令之后,我们按住【i】切换到【插入模式】就可以把自己想要添加的添加到里面去

 

  • 紧接着输入完后再按下键盘左上角的Esc键退回【命令模式】

 

  • 最后在继续按下【shift + :进入【末行模式】,或者大家按住键盘上的【:】然后输入【wq!】,因为这个【sudoers】是这写保护文件,不可随意修改

 以上便是我们具体的操作过程了。


紧接着我们在去验证以下此时加入过后成功了没有!!

不受权限约束后,就可以进行其他操作了。因此综上所述,大家对这个理解了吗?普通用户只需要进行【sudo】就能以【root】用户的身份去执行任何指令。

 



4.4 chown指令

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

在上述我们已经对设置文件的权限进行了具体的了解,接下来我们需要对文件的访问者这项进行了解,即尝试修改一下这个文件的访问者。

  • 首先就是修改文件的【拥有者】,使用的就是【chown】这个指令,但是这里大家先思考一下,当我们想把这个文件给别人的时候,别人是否允许我们给他呢?我们通过代码进行查看

  •  上述我们不难发现这样做其实是会被拒绝的,大家根据现实生活也可以理解这一点,但是经过上面的讲解大家应该都明白了一点,那就是对于【root】来说是不被权限所约束的,所以我们可以以【root】的身份去运行


4.5chgrp指令

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

  • 那么这个指令什么意思呢?很简单,就是改变文件的所属组的

我们还是通过代码来进行直观的了解:

  • 还是紧跟上面,现在我想要把这个文件的所属组给到【hello】,然后看看是否可以

 

最后,补充一点,对于修改【拥有者】和【所属组】是可以一起进行的,在中间加上冒号:即可

4.6 file指令

接下来再给大家补充一个指令,即——file指令。在linux下我们可以通过【ll】或【ls】,甚至于【ls -l】进行查看

功能说明:辨识文件类型。

语法:file [选项] 文件或目录... 

常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。

通过上文可以知道,我们对文件做识别是通过第一个字母进行查看的,但是有时候对我们来说相对文件做一个更细腻度的文件识别时,此时应该怎么办呢?此时就需要用到【file】指令了。


(五)Linux下三个重要权限

接下来我就带领大家去具体的认识【linux】下的三个重要权限。分别是:

  • 目录权限
  • 默认权限
  • 粘滞位

接下来我们一一进行讲解。

5.1 目录权限

首先,我先抛给大家一个问题?那就是大家认为当我们要进入一个目录时需要具体的什么权限呢?

  • a)首先,对于【r】权限是我们必须要有的吗?我们通过代码举例

 那么接下来,如果我删除了对这个文件的【r】权限,是否还能像这样呢?

 

因此,综上所述我们可以得出,对于进入一个目录,【r】权限并不是我们所必须的!!

  • b)既然对于【r】来说并不是必须的,那么对于【w】权限来说是不是必须的呢?我们继续往下看

 

因此,结合上图,我们能够得出【w】权限也并不是我们进入一个目录所必须的!!

  • c)既然前两者都不是必须的,那么【x】权限是不是就是必须的呢?

 

到此,综上所述,如果我们要进入一个目录,必须要有的则是——【x】权限!!!


上述问题我们已经清楚了,那对于目录来说,【r】代表什么意思呢?

 因此,通过上述我们不难发现:在没有【r】权限的目录下,我们无法查看当前目录下的文件名和文件属性。

那对于目录来说,【w】代表什么意思呢?

 因此,通过上述我们不难发现:在没有【w】权限的目录下,我们无法直接在当面目录下创建新文件。

至于具体的原因,我会在后面给大家讲解。今天暂时讲不了。


5.2 默认权限

接下去我们来说说有关Linux中的默认权限,这部分知识需要大家下点功夫理解起来!!

a)文件的“起始权限”与“默认权限”

先给大家看一个事件,让大家先有一个印象:

  •  此时,就有很多小伙伴好奇了?为什么当我们创建的普通文件(不包括可执行)的默认权限是从【664】开始的,而创建的目录是从【775】开始的呢?(大家需要注意一点,不同的操作系统,默认权限可能跟我这里的不一样)

接下来我给大家讲一讲:

  • 对于默认权限来说,就是你所看到的;
  • 对于起始权限来说,这一部分是由系统设定的。对于普通文件来说,它的起始权限是从——666开始的(没有x),而目录文件的起始权限是从——777开始的(全部都有);
  • 对于最终权限,其实就相当于与默认权限,就是你最后看到的。

此时大家就可能会好奇,那系统是如何从起始权限变到最终权限的呢?

  • 系统为了更好的控制文件权限,系统会有默认的:权限掩码来帮助我们去了解

b)umask权限掩码

功能

  • 查看或修改文件掩码
  • 新建文件夹默认权限=0666
  • 新建目录默认权限=0777
  • 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

格式

  • umask 权限值

说明

  • 将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。
  • 超级用户默认掩码值为0022,普通用 户默认为0002

 

特别注意:我们这里最开始的0,表示的不是数字中的那个【0】,而是表示的是八进制的意思哟!

c)最终权限计算方法

我们先给出规则最终权限 = 起始权限 & (~umask)

  • 正式计算之前不知道大家是否还记得,对于文件的起始权限来说,目录文件的起始权限均为【777】,普通文件的起始权限均为【666】
  • 对于umask权限掩码来说,root用户的默认权限掩码为【0022】,而普通用户的默认权限掩码为【0002】,因此这里就要看你使用的是哪个用户了。接下来我们给出详细的表示过程:

 如果有疑问的,或许大家就还要去补补运算相关的知识了!!!此时大家应该就清楚为什么最终是那个样子了吧!系统隐士的对其进行了转换。

有了上述的知识,我们就可以对其进行进行修改的操作了。

 

通过上述的学习,大家是否知道这里是怎么计算出来的吗?不知道没关系,我再给大家演示一次:

 到此,关于默认权限的全部知道便到这了,我相信聪明的小伙伴们肯定一看就会的!!!


5.3 粘滞位

首先我先给大家介绍一下什么叫做粘滞位。

  • 粘滞位(Stickybit),又称粘着位,是【Linux】文件系统权限。最常见的用法在目录上设置粘滞位,也只能针对⽬录设置,对于⽂件⽆效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于【共享】目录,以防止普通用户删除或移动其他用户的文件

a)前情摘要

因此,根据上述这就引出了粘滞位引入的基本背景:

  • 未来在使用【linux】的时候,可能会有会有共享目录被所有的普通用户所共享,用来保存普通用户产生的临时数据,通常有root提供

 

接下来我们便创建一个共享目录给大家见识一下:

 接下来我们就需要对其进行提权操作了,经过如下操作时候便是成功的创造出了一个共享目录:

  •  此时,当我们想在这里共享目录下创建文件可以吗?答案当然是肯定的:

 

当我们想往其他的文件下写入时。此时是否可行呢(这点我相信大家学到这了应该也知道)?

  •  于是这个时候就会出现一个问题,既然你对我来说不能读、不能写、不能执行,那我干脆就就删了这个文件,我不能看,你也别想看(有点 既然我得不到,你也休想得到的韵味)

 所以在这样的背景下,为了让大家共享文件,却不让其他的用户能够随意的删除我的文件,此时就引出了粘滞位的。

  • 粘滞位权限便是针对此种情况设置,当⽬录被设置了粘滞位权限以后,即便⽤户对该⽬录有写⼊权限,也不能删除该⽬录中其他⽤户的⽂件数据,⽽是只有该⽂件的所有者和root⽤户才有权将其删除。设置了粘滞位之后,正好可以保持⼀种动态的平衡:允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。

特别注意: 需要注意的是, 粘滞位权限只能针对⽬录设置,对于⽂件⽆效。

b)如何添加粘滞位防止恶意删除

  • 粘滞位权限都是针对其他⽤户( other)设置,使⽤chmod命令设置⽬录权限时,“o+t”“o-t”权限模式可分别⽤于添加、移除粘滞位权限。

接下来我们便添加粘滞位:

 

 

  • 设置了粘滞位权限的⽬录,使⽤ls命令查看其属性时,other⽤户权限处的“x”将变为“t”。

 

  • 此时,在当我们想去对文件进行删除时,是否还能删除成功呢?我们在测试一下:

 不难看出当我们添加了粘滞位之后,此时就不能在对里面的文件进行删除操作了。

c)常见问题分析

接下来回答几个大家比较关心的问题。

① 为什么不能拦住别人删我的文件呢,是权限存在的Bug吗?

  • 当然不是,大家仔细观察后便可以发现当前目录下的【other】还有【w】权限,因此它是可以删除的。

② 为什么只能给共享目录添加粘滞位呢?其他目录的不行吗?

  • 因为共享目录下的【other】必须具有读和写的权限,但是因为存在【w】权限会导致用户可以删除其他用户的文件,因此基于这种情况,为了防止这种情况的发生,共享目录才要加上粘滞位

③ 为什么要做的这么麻烦,我们直接把【other】的【w】权限删除掉,这样不就不会发生乱删的情况了吗?

  • 大家可以想想,若是将【other】的【w】权限删除掉的话,那也拦住了使用这个共享目录的用户创建文件、写文件,一旦这样,共享目录就失去了它存在的意义

④ 设置了粘滞位后的目录,谁能删除自己的文件呢?

  • 一、超级管理员删除
  • 二、该目录的所有者删除
  • 三、该文件的所有者删除

(六)总结

关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读 权限

以上便是Linux权限的全部问题了,到此本文就结束了,如有疑问大家可以评论区留言哟!!最后如果本文对您有帮助的话,麻烦一键三连哟!!!

 

相关文章:

【Linux】Linux下权限的理解

前言:在之前我们已经对基本的指令进行了深入的学习,接下来我将带领大家学习的是关于权限的相关问题。在之前,我们一直是使用的【root】用户,即为“超级用户”,通过对权限的学习之后,我们就会慢慢的切换到普…...

Prometheus监控实战系列十七:探针监控

目前对于应用程序的监控主要有两种方式,一种被称为白盒监控,它通过获取目标的内部信息指标,来监控目标的状态情况,我们前面介绍的主机监控、容器监控都属于此类监控。另一种则是“黑盒监控”,它指在程序外部通过探针的…...

题目:JPA的懒加载失效是什么情况?

题目:JPA的懒加载失效是什么情况?Q1:什么是JPA的懒加载?Q2:JPA的懒加载会在什么情况下失效?Q3:如何避免JPA的懒加载失效?前言:在使用JPA进行数据库操作时,懒加…...

十六、消息推送

一、什么是消息推送? 消息推送通常是指网站的运营工作等人员,通过某种工具对用户当前网页或移动设备 APP 进行的主动消息推送。 消息推送一般又分为 Web 端消息推送和移动端消息推送。 消息推送无非是推(push)和拉(p…...

PMP项目管理-【第一章】引论

项目知识体系: 项目管理知识体系: 1.1 项目特性 独特性:独特性会带来不确定性(风险) 临时性:1> 任何项目都有起始终止时间 2> 项目具备临时性,项目成果可能是永久的 1.2 项目驱动变革 从商业角度来看&#xff0c…...

前端布局小案例,分享3个漂亮的卡片组件

当今互联网发展迅猛,各种应用、网站和软件层出不穷,其中前端技术的发展更是让人瞩目。随着用户对于界面设计的要求越来越高,漂亮的卡片组件在各类网页设计中变得越来越流行。本文将分享三个精美的卡片组件,帮助您在前端开发中轻松…...

博客重载记录

博客重载记录流控算法实现open系统调用流程二分查找前言: 有时候看了一些比较好的文章,过几天就忘了,想想不如自己实现一遍博客代码或按博客结构自己写一遍,加深印象,但把别人的内容改个名字变成自己的博客&#xff0c…...

open-cv绘制简单形状line() circle() rectangle() polylines() putText() cvtColor()

OpenCV彩色图像中一个像素是按照“B-G-R”模式组织的。 绘图函数的一些公众参数: img :图像对象 color: 颜色,如果彩色用一个三元组表示,三元组的元素按照B-G-R组织,三元组(0,255,0)中B为0,G为2…...

基于 PyTorch + LSTM 进行时间序列预测(附完整源码)

时间序列数据,顾名思义是一种随时间变化的数据类型。 例如,24小时内的温度、一个月内各种产品的价格、某家公司一年内的股票价格等。深度学习模型如长短期记忆网络(LSTM)能够捕捉时间序列数据中的模式,因此可以用于预…...

GEE页面介绍

目录一、背景二、用户界面三、数据类型:栅格1、请求图像集合2、学习查看栅格元数据3、矢量实例一:四、数据集五、数据属性1、空间分辨率2、时间分辨率六可视化多个波段1、真彩色(TCI)2彩色红外(CI)3、伪色 1 和 2 (FC1/FC2)七、可…...

python自动发送邮件,qq邮箱、网易邮箱自动发送和回复

在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件。今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件。 一、获取邮箱的SMTP授权码。…...

hastcat

hashcat 下载地址: https://hashcat.net/hashcat/ 案例 Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...https://xz.aliyun.com/t/4008破解linux shadow /etc/shadow中密码格式: $id$salt$encrypted如:$1$2eWq10AC$NaQqalCk3 1表…...

242. 一个简单的整数问题

Powered by:NEFU AB-IN Link 文章目录242. 一个简单的整数问题题意思路代码242. 一个简单的整数问题 题意 给定长度为 N的数列 A,然后输入 M行操作指令。 第一类指令形如 C l r d,表示把数列中第 l∼r个数都加 d 第二类指令形如 Q x,表示询问…...

docker安装Redis高可用(一主二从三哨兵)

本次教程使用docker swarm安装 准备三台机器 hostIP用途node1192.168.31.130redis-master01,redis哨兵节点01node2192.168.31.131redis-slave01, redis哨兵节点02node3192.168.31.132redis-slave02 redis哨兵节点02 注意事项: 1:需要保证三…...

安全防御之入侵检测篇

目录 1.什么是IDS? 2.IDS和防火墙有什么不同?3.IDS的工作原理? 4.IDS的主要检测方法有哪些?请详细说明 5.IDS的部署方式有哪些? 6.IDS的签名是什么意思?签名过滤器有什么用?例外签名的配置作…...

学习系统编程No.10【文件描述符】

引言: 北京时间:2023/3/25,昨天摆烂一天,今天再次坐牢7小时,难受尽在不言中,并且对于笔试题,还是非常的困难,可能是我做题不够多,也可能是没有好好的总结之前做过的一些…...

网络基础认识

目录 一、计算机网络背景 1.1 网络发展 1.2 "协议"由来 二、网络协议初识 2.1 协议分层 2.2 OSI七层模型 2.3 TCP/IP五层模型 三、网络协议栈 四、数据包封装与分用 五、网络传输基本流程 5.1 同局域网的两台主机通信 5.2 跨网络的两台主机通信 六、网络…...

【蓝桥杯_练习】

蓝桥杯1.创建工程2.LED灯点亮led.c3.LCD液晶屏显示lcd.c4.定时器按键单机interrupt.hinterrupt.cman.c5.定时器(长按键)interrupt.hinterrupt.cmain.c6.PWMmain.c7.定时器-输入捕获(频率,占空比测量)interrupt.cmain.c…...

【C语言蓝桥杯每日一题】——跑步锻炼

【C语言蓝桥杯每日一题】—— 跑步锻炼😎前言🙌排序🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介…...

Qt之实现类似软件安装时的新功能介绍界面

一.效果 在软件安装时,一般会轮播软件的新功能,安装后,如果还想查看这些新功能该怎么办呢,我们可以把这个介绍新新功能的小应用集成到软件的“帮助”菜单中,比起纯黑文字的无趣介绍,图文方式的呈现会生动得多。 最近在看《赘婿》,借几张图过来用用。 二.原理 1.分层结…...

echarts地图不同地区设置不同的颜色

var myChart ec.init(document.getElementById(main));let option {tooltip: {trigger: item,},dataRange: {//左下角的颜色块。start:值域开始值;end:值域结束值;label:图例名称;color:自定义…...

网易云音乐API部署Vercel获取接口过程

前提:部署自己的网易云接口主要用途在于在完成前端的仿网易云播放器的时候,根据自己部署的接口可以用于获取数据。大体流程是通过在github上fork别人的API接口项目,然后在Vercel部署即可获得自己的网易云后端数据接口了,不过根据我…...

Java基础:字符串(String)及常用操作

目录 字符串的声明及创建 字符串的操作 连接字符串(或concat) 获取字符串的长度 length 查找字符串 indexOf 获取字符串某个位置的字符 charAt 查询某个字符串是否存在 contains 截取字符串 substring(一) 截取字符串 su…...

FL Studio 21中文版支持主题随心换,FL Studio 21Mac版新增对苹果M2/1家族芯片原生支持。

FL Studio 21.0.0 官方中文版重磅发布 纯正简体中文支持,更快捷的音频剪辑及素材管理器,多样主题随心换! Mac版新增对苹果M2/1家族芯片原生支持。 更新版本:21.0.0支持语言:简体中文/英语更新时间:2022.12…...

【蓝桥杯集训·周赛】AcWing 第96场周赛

文章目录第一题 AcWing 4876. 完美数一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4877. 最大价值一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4878. 维护数组一、题目1、原…...

【数据结构】顺序表的深度刨剖析

前言:在上一篇文章中,我们已经对数据结构有了一定了解,我们可以通过优化空间复杂度或者时间复杂度从而提高我们程序运行或存储速率。至此我们就知道了数据结构的重要性,所以今天我们将要了解和学习一种实用的数据结构——线性表。…...

Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例

Unity 之 使用原生UGUI实现随手移动摇杆功能实现效果一,实现思路1.1 原理解析1.2 思路概述二,实现代码2.1 随手落下2.2 摇杆转动三,源码分享3.1 场景搭建3.2 完整代码3.3 实现效果实现效果 本文最终实现效果: 一,实现…...

Linux内核源代码概述

Linux内核源代码非常庞大,截止到2015年据统计代码总量就已经超过1500万行(LOC,Line of Code),看代码总量非常吓人,具体看这1500万行代码的大致分布情况如下图。 显然占比最大的drivers和arch目录下的代码合…...

Nginx 教程-动静分离

一、Nginx 动静分离理论1、概念今天学习和梳理Nginx动静分离,动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,之所以要进行动静分离,其一为了提高前端…...

自己设计的网站,如何实现分页功能?(详细代码+注释)

目录 前言 实现分页功能 需求分析 客户端开发 服务器开发 前后端交互——两种前端得到 文章总页数 的方法,那种更合适? 前言 你在设计网站的时候是否有过这样的烦恼:“我设计的网站怎么就是从上到下一条线内容全部展开,一点都…...

江西论坛/百度关键词seo外包

全球领先的射频解决方案设计制造厂商SkyCross日前宣布其面向LTE 和 Wi-Fi的双频iMAT(隔离模式天线技术)和 4x4MIMO(多输入多输出)解决方案能使配备高通骁龙 820 智能设备处理器的性能最大化。SkyCross 先进的 iMAT天线及方案已于2014年面市,并被用于超过一百万部商用…...

数字营销证书/高级seo

因为看到很多公司招聘需要有linux平台下的开发经验,所以今天在笔记本上装了一个Kubuntu作为以后学习的平台。本文采用的是win7Kubuntu双系统的模式,尽管最后安装成功了,但是中间有很多波折在此记下来以备以后再次发生同样的事情。首先&#x…...

做网站的设计尺寸/免费域名注册永久

Python在行的开头使用间距来确定代码块何时开始和结束。你可以得到的错误是: 意外的缩进。这行代码在开始时比前一行有更多空格,但前一行不是子块的开头(例如if / while / for语句)。块中的所有代码行必须以完全相同的空格字符串开…...

网站建设 长春/google推广 的效果

Python3.x 1 数据类型 1.0 标准数据类型 Python3.x标准数据类型有6中,如下: 序号数据类型描述1数字Number2字符串String3列表List4元组Tuple5字典Dictionary6集合Set 1.2 数字(Number) 数字包括整数,浮点数,布尔数据和复数四种,python3.x中将True和False定义成关键字,表示…...

四川省网站建设/全网推广方案

【简答题】运用PS知识,创作一幅作品。作品主题:黑与白。分别保存为psd和jpg格式提交。【简答题】请同学们以“PS滤镜设计案例”为关键词在网上检索3个滤镜案例,并运用滤镜技术,制作3幅作品。【简答题】提交参赛作品修改3稿【简答题】运用所学的PS知识,实用三种颜色,进行作品创作…...

游戏网站开发目的/潍坊在线制作网站

/************************************************************************ busybox reboot 无效* 说明:* 最近调传感器,使用的ssh连接设备,调完程序发现reboot命令无效,后来* 经过使用uart口看启动过程…...