首先要知道Linux的RWX(读写执行)权限对于文件和目录的意义是不一样的.
先明确什么目录? 它仅仅是一个包含文件或目录名字的清单, 所以 目录 = 文件或目录名字的清单
对于目录: (以下假设有个名为test的目录)
R:(读权限) 可以读取到这个清单. 即目录底下所有文件的名字. 具体能不能读取到文件的内容要看本身文件有没有可读属性, 同时前提目录需要有x(执行权限), 才能读到具体文件内容
你可以ls test获取test目录底下有什么文件, 仅仅是文件名字 清单, 但无法获取目录下文件的具体信息(比如大小等)
在使用Linux命令行时, tab补全文件名需要目录具有读权限
只有R权限, 无法cd ./test进入目录
W:(写权限) 拥有对这个清单的修改功能. 你可以在目录下增加文件, 修改文件名, 删除文件,但是这个操作的前提是需要目录的执行权限.
X:(执行权限) 当你要做以下操作时, 你需要这个权限
cd 进入目录
访问(读, 写, 执行)内部文件操作
对目录底下清单的修改, 如增加, 修改文件名, 删除文件(当然, 本条的操作目录读权限也是要开启的)
总结: 除了ls ./test/列出目录下所有文件的名字操作不需要目录执行权限外(仅需目录读权限) ,其他操作的前提都需要目录有执行权限.
对于文件:(这个就比较简单就是字面上的意思了)
R:对文件的读取
W:对文件内容的写入
X: 执行这个文件
一些有趣的例子
当你的目录test只有执行权限, 目录中有个a.txt文件, 此文件有读权限,那么你就可以使用比如vi ./test/a.txt 进行读, 有写权限你就可以写, 有执行权限你就可执行. 目录有没有读或写的权限没关系.
原理解释:
本篇基于以下资料自己重新整理的: