前言:笔者在学习Linux时,对文件和目录这两个概念一直比较迷惑,经过学习,结合权限设置,现在来记录一下自己的理解。
1.文件与目录的理解
- 假设文件是一堆文件盒,而目录则是一堆抽屉。
- 你可以在文件上面改/写数据;可以将文件放置在不同的目录里。
- 目录的最大目的就是拿出/放入文件。
2.文件与目录的权限
2.1 文件
文件是实际含有数据的地方,包括一般文本,数据库文本,二进制可执行文件等。
- r: 可读取此文件的实际内容,如读取文本文件的文字内容等;
- w: 可以编辑、新增或是修改该文件的内容,但不能删除该文件;
- x: 改文件具有可以被系统执行的权限。
- rwx: 这三个权限是针对文件的内容而言的,不是针对文件本身。也就是一封信,你可以rwx里面的内容,但是你不能把这封信本身删除掉。
在Linux下,文件能否被执行,是通过是否具有X
权限来决定的,不是看文件名。
2.2 目录
目录主要的内容在记录文件名列表,文件名与目录有强烈的关联。
- r: 能够读取目录结构列表的权限,可以查询该目录下的文件名数据,也就是可以ls显示。
- w: 可以改动该目录结构列表的权限,包括:建立新的文件与目录、删除已经存在的文件与目录(不管你对文件本身有没有权限)、将已存在的文件或目录更名、移动目录中文件与目录的位置。
- x: 能够进入该目录成为当前的工作目录。
总结
- 对文件来说,rwx是针对文件的内容来设计的(信的内容)。
- 对目录来说,rwx是针对文件名列表来设计的(抽屉里的很多信)。
- 能不能进入某一个目录,只有该目录的x权限有关。如果你在某目录下没有x权限,那你就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你拥有该目录的r和w权限。
- 要开放目录给任何人浏览,至少应该给r和x的权限(一般目录的r和x权限是成对出现的),但w权限不可随便给。
举个栗子
有这样一个文件/dir1/file1
,要是我们想读取/修改/删除/执行file1
文件,那么我们对/dir1
最少需要有什么权限呢?
答案是:x
,而不是r-x.
解析:我们知道/dir是一个目录,也就是个抽屉。那个抽屉的r权限代表“这个抽屉有光”,你能看到抽屉内的文件名称(注意不是内容)。但是有x
权限代表你可以不需要光而摸黑拿到该文件。所以只需要x
即可,r
不是必须的,只是没有r权限使用[tab]时无法自动帮你补全文件名。
参考:
《鸟哥的Linux私房菜 第四版》P162