【Linux】-剖析目录权限+粘滞位

本篇文章我将向大家详细介绍Linux中两个非常重要的知识点目录权限以及粘滞位,这两点也是在面试中经常会被问到的两个问题,我会尽自己最大的努力来让大家有所收获。

1. 目录的三大权限

  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.

下面我们先来通过几个例子来感受一下目录的三种权限。

1.1 可读权限

在这里插入图片描述
dir1是当前路径下的一个目录。我是这个目录的拥有者,可以看到一开始我拥有目录dir1的读权限,所以我可以调用ls指令查看到当前目录下有两个文件file1.txt和file2.txt。

这里我再简单说一下吧,观察目录详细信息的第一部分是10个字符。

在这里插入图片描述
这里的第一个字符'd'表示当前文件的类型是目录(注意:Linux下一切皆文件)。像下面的普通文件file1.txt的第一个字符就是'-'.

接下来的九个字符33为一组,分别表示拥有者、所属组、其他用户的权限。

其中'r'表示可读权限,'w'表示可写权限,'x'表示可执行权限。如果当前位置是字母,说明拥有这项权限,如果是字符'-'说明不拥有这项权限。

接下来使用chmod指令去掉拥有者的读权限。

chmod -r dir1

紧接着当我再来再来调用ls指令查看目录dir1下的文件时,大家可以看到申请被拒绝。这就是因为我没有这个目录的读权限。

我们再来看:
在这里插入图片描述
虽然我当前没有读权限,但是我还有写权限。因此我还是可以往目录下写文件,而没有被拒绝。

同理:
在这里插入图片描述
虽然我当前没有读权限,但是我还有执行权限。因此我还是可以进入到目录中去。

1.2 可写权限

在这里插入图片描述
如上图所示,一开始我拥有dir1目录的写权限,所以我可以调用touch指令往dir1目录下创建一个新文件file4.txt。

touch dir1/file4.txt

当我再次调用chmod指令去掉拥有者的写权限:

chmod u-w dir1

这时我发现当我再次想要往目录下写文件的时候,被拒绝了。这就是因为我没有当前目录下的写权限。

在这里插入图片描述
同理,虽然我没有dir1目录的写权限,但是我还是有dir1目录的读权限和可执行权限,因此我依旧可以进入查看dir1目录的文件,以及进入dir1目录。

1.3 可执行权限(重点!!)

在这里插入图片描述
这次我们再来看目录的可执行权限。

如上图所示,一开始我拥有dir1目录的可执行权限,所以我可以进入到当前目录下。

当我再次调用chmod指令移除掉拥有者的可执行权限。

chmod u-x dir1

这时当我再次想要进入dir1目录时,被拒绝了。这就是因为我没有当前目录的可执行权限。

!!!但是,但是
在这里插入图片描述
我发现我虽然没有当前目录的可执行权限,但是我还是有读权限和写权限的。好,你不让我进去就不进去,但我还是可以读dir1目录下的内容,以及往dir1目录里写东西吧。

但是可以看到,这两个申请统统被拒绝了。这,又是为什么呢?

好了这里就要告诉大家我所要将的本篇文章的第一个重点。

目录不论是读还是写,前提是都要进入目录。也就是说如果没有执行权限进不去目录,即使有读和写权限依旧是无济于事的。这是极为易错的一点,也是面试中经常会被问道的一个问题,所以大家应该牢记于心。

1.3.1 目录可执行权限总结(重点!!)

下面我再来为大家总结一下目录的可执行权限。

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

2. 粘滞位(重点!!)

2.1 粘滞位的引入原因

下面我再来为大家介绍本篇文章的第二个重点,粘滞位

首先,什么是粘滞位?为什么会搞出这么一个东西呢?

这里我就要带大家再回顾一下我前面提到的目录权限的概念。
在这里插入图片描述
注意观察可写权限当一个人拥有目录的可写权限时,他就可以删除掉当前目录下的文件

这意味着什么?就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否拥有这个文件的写权限.

下面我们来验证一下:
在这里插入图片描述
当前我是用户leo,可以看到,当前路径下有一个目录rootdir它的拥有者和所属组是root,所以我是这个目录的other。

这里可以看到,我这个other拥有rootdir目录的写权限。

然后进入到rootdir目录里可以看到,当前目录里有两个文件,file1.txt和file2.txt,这两个文件的拥有者和所属组都是root,所以说我是这两个文件的other。注意看,我并没有这两个文件的写权限和可执行权限,也就是说我除了查看外不能对这个文件进行任何操作。

但是,我竟然调用rm指令将file2.txt文件给删掉了。

rm -f file2.txt

这个时候就会出现问题,这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉,而且你张三也没有我这个文件的写权限啊?

为了解决这个不科学的问题, Linux引入了粘滞位的概念.

2.2 粘滞位的使用

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

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

在这里插入图片描述
这次我使用chmod指令为rootdir目录加上粘滞位。

chmod +t rootdir

如上图所示,加上粘滞位之后详细信息第一段的最后一列就会变为't'.
在这里插入图片描述
前面我刚为目录rootdir加上了粘滞位,现在我再以leo的身份进来,这时我依旧具有rootdir目录的读写权限。

那我还能不能像刚才一样删掉该目录下的文件呢?

显然,最终结果被拒绝了,提示操作不被允许。

这就是粘滞位的作用!!

好了,本篇文章到这里就结束了。本篇文章我主要想向大家介绍两个重点:一个是可执行权限与可读权限和可写权限的不同,还有一个是粘滞位的由来以及使用方法。

最后希望这篇文章可以为大家带来帮助,如果觉得哥们写的还凑活的话就帮忙点个赞吧,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值