作者:Insist--
个人主页:insist--个人主页
作者会持续更新网络知识和python基础知识,期待你的关注
前言
通过上篇文章,我们知道了Linux 系统内文件的三种身份(拥有者、群组与其他人),还知道每种身份都有三种权限(rwx), 已知道能够使用 chown, chgrp, chmod 去修改这些权限与属性,当然,利用 ls -l 去观察文件也没问题。
问题:这些文件权限对于一般文件与目录文件有何不同呢?下面会给大家详细讲解
目录
一、权限对文件的重要性
二、权限对目录的重要性
三、对上面进行总结
四、例题
一、权限对文件的重要性
文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件等等。 因此,权限对于文件来说,他的意义是这样的:
r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等。
w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件)。
x (eXecute):该文件具有可以被系统执行的权限。
再来看,可读(r)代表读取文件内容还是挺好理解的,但是可执行(x)呢?
在Windows 系统下,一个文件是否具有执行的能力是由扩展名(比如:.exe 或 .bat)来判断的。但是在 Linux 底下,我们的文件是否能被执行,则是由是否具有x这个权限来决定的!
至于最后一个 w 权限,当你对一个文件具有 w 权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限!
二、权限对目录的重要性
文件是存放实际数据的,那么目录主要是储存啥呢?目录主要的内容在记录文件名列表,文件名与目录有强烈的关连。那么如果是针对目录时,那个 r、w、x 对目录是什么意义呢?
r (read contents in directory):表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。
w (modify contents of directory):这个可写入的权限对目录来说,是很重要的! 因为他表示你具有异动该目录结构列表的权限,也就是下面这些权限:
1、建立新的文件与目录
2、删除已经存在的文件与目录(不论该文件的权限为何!)
3、将已存在的文件或目录进行更名
4、搬移该目录内的文件、目录位置。
x (access directory):那么目录的执行权限有啥用途啊?可能有人会说:目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的 x 代表的是用户能否进入该目录成为工作目录(目前所在的目录)的用途!
举个例子:当你登入 Linux 时, 你所在的家目录就是你当下的工作目录。而变换目录的指令就是cd!
三、对上面进行总结
看完上面的知识,有人可能会觉得很乱,那么有没有清晰一点的说明?当然有!
现在假设“文件是一堆文件文件夹”所以你可能可以在上面写/改一些资料。而“目录是一堆抽屉”,因此你可以将文件夹分类放置到不同的抽屉去。 因此抽屉最大的目的是拿出/放入文件夹喔!现在让我们汇整一下数据:
根据上述的分析,你可以看到,对一般文件来说,rwx 主要是针对“文件的内容”来设计权限,对目录来说,rwx 则是针对“目录内的文件名列表”来设计权限。 其中最有趣的大概就属目录的 x 权限了!其实,这个 x 权限设计,就相当于“该目录,也就是该抽屉的钥匙”! 没有钥匙你怎么能够打开抽屉呢?对吧。大致的目录权限概念是这样。
四、例题
下面我们来看个例题,让你了解一下啥是目录的权限!
答案:vbird 对此目录仅具有 r 的权限,因此 vbird 可以查询此目录下的文件名列表。因为 vbird 不具有 x 的权限,所以 vbird 没有这个抽屉的钥匙啦! 因此 vbird 并不能切换到此目录内!(相当重要的概念!)
上面这个例题中因为 vbird 具有 r 的权限,因为是 r 乍看之下好像就具有可以进入此目录的权限,其实那是错的。 能不能进入某一个目录,只与该目录的 x 权限有关!此外, 工作目录对于指令的执行是非常重要的,如果你在某目录下不具有 x 的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的 r 或 w 的权限。