【Linux】目录权限和默认权限

上期介绍了Linux的文件权限,这期我们仔细来说说Linux环境下目录权限和默认权限

一、目录权限

1.1 进入目录所需的权限

我们在进入目录时需要什么样的权限呢?

是r、w还是x呢?

下面我们一起来验证一下:

如下我门拥有全部目录dir的权限,是可以自由的进退目录的:

【Linux】目录权限和默认权限_第1张图片

现在去掉目录dir拥有者的r权限,发现也是可以自由的进退目录的:

【Linux】目录权限和默认权限_第2张图片

再去掉目录dir拥有者的w权限,发现还是可以自由的进退目录的:

【Linux】目录权限和默认权限_第3张图片

最后去掉目录dir拥有者的x权限,发现没有权限进退目录了

【Linux】目录权限和默认权限_第4张图片

综上所述:进入一个目录只需要x权限

1.2 查看目录下文件所需的权限

当我们进入目录后,想要查看目录下文件需要什么权限呢?

接下来接着验证:

我们现在拥有全部的权限,是可以进入dir目录的并查看其中内容的:

【Linux】目录权限和默认权限_第5张图片

现在去掉目录dir拥有者的r权限,发现并不能读取目录下文件了:

【Linux】目录权限和默认权限_第6张图片

综上所述:读取目录下文件需要r权限

1.3 在目录下创建新文件和删除文件所需的权限

当我们进入目录后,想要在目录下创建新文件需要什么权限呢?

继续验证,根据以上规律,这里偷个小懒,现在直接去掉dir目录拥有者的w权限来试试看:

【Linux】目录权限和默认权限_第7张图片

发现并没有在目录下创建新文件的权限了

经验证,删除文件也是如此

综上所述:在目录下创建新文件和删除文件要r权限

1.4 粘滞位

现在我们来想象一个场景:我们在工作时上级创建了一个共享目录,所有员工都可以在此目录里共享文件(即都可以在此目录里创建、删除。阅读和运行文件),各员工都可以修改自己文件的权限。当有一天你没有给某个同事阅读自己文件的权限,同事一气之下将你在此目录里留存的文件全部删了,这极其不合理,但是在Linux环境下是可以做到的(因为共享目录下,对所有人都有w权限)。

下面是举例:

上级创建了一个public共享目录

【Linux】目录权限和默认权限_第8张图片

有一天LHS用户进入了该共享目录

【Linux】目录权限和默认权限_第9张图片

该用户删除了CC用户创建的文件

【Linux】目录权限和默认权限_第10张图片

为了避免这种情况,我们引入了粘滞位(只能给目录添加这一概念:

具体操作为:chmod +t 想要添加粘滞位的目录

继续举例:

上级发现了这件事情,将公共目录public加了一个粘滞位:

【Linux】目录权限和默认权限_第11张图片

LHS这个用户故技重施,发现删除不了CC用户的文件了:

【Linux】目录权限和默认权限_第12张图片

综上所述:粘滞位存在的意义就是保护共享目录下的共享文件,不让他人乱删文件(这样共享目录下的文件只能由文件的拥有者和root可以删)

二、默认权限

我们在Linux环境下创建了一个文件或者目录时,可以看到其默认权限:

【Linux】目录权限和默认权限_第13张图片

在我们没有修改任何权限的情况下,可以看到:

普通文件(不包括可执行文件)默认权限是:664(八进制方案),目录默认权限是:775(八进制方案)

但这种默认权限只在我的环境下存在,不同的环境默认权限可能不一样

那默认权限是怎么来的呢?

2.1 最终权限

实际上:默认权限=最终权限=起始权限&(~umask)

现在我们来仔细分析一下最终权限是怎么来的:

2.1.1 起始权限

在得到最终权限之前先要了解Linux环境下的起始权限:

普通文件(不包括可执行文件)起始权限是:666(八进制方案),目录起始权限是:777(八进制方案)

而umask就是权限掩码

权限掩码的作用就是在起始权限中,去掉在umask中出现的权限,并且不能影响其他权限

这样我们将umask按位取反,再与起始权限(需要转换为2进制)与或即可得到最终权限:

【Linux】目录权限和默认权限_第14张图片

2.2 umask

对于umask我们是可以进行修改的:

使用umask指令即可

具体操作为:umask 八进制方案

下面是举例操作:

【Linux】目录权限和默认权限_第15张图片

这样我们所看到的默认权限就发生了变化


今天的博客到此为止就将Linux上所有的权限内容一一分析完毕了

下面将会给各位看客带来Linux上的一些工具和C++内容,敬请期待~

本文若有纰漏还请各位大佬在评论区不吝赐教呀

你可能感兴趣的:(Linux,linux)