为什么文件夹必须是可执行的?

为什么文件夹必须是可执行的?

文件权限:

chmod 664 myFile // rw-rw-r--

对于文件夹:

chmod 774 myFolder // rwxrwxr--

如果我仅使用“读写”权限,文件夹将不会显示其内容。

这是什么原因呢?

答案1

由于您无法“执行”目录,因此执行位得到了更好的利用。即使您无法列出目录内容,目录上的执行位也允许您访问目录内的项目。

$ mkdir -p dir/
$ echo 'Hello World!' > dir/file
$ chmod 000 dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
cat: dir/file: Permission denied
$ chmod +x dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
Hello World!

来自chmod手册页:

字母 rwxXst 为受影响的用户选择文件模式位:读(r)、写(w),执行(或搜索目录)(x)、仅当文件是目录或已经对某些用户具有执行权限(X)时才执行/搜索,在执行时设置用户或组 ID(s)、限制删除标志或粘滞位(t)。

答案2

目录(在 *nix 中通常不称为文件夹)的权限位与普通文件具有不同的含义。

对于目录,写入允许创建新文件和删除其中的文件。

读取允许您列出其中的文件。

执行允许您进入它并访问里面的文件(或其他目录)。

答案3

目录上的执行权限允许您遍历它,以使用其中包含的资源。

答案4

文件夹上的位x是指索引/目录搜索/列表;如果将该位保持在低位,则这些都不可能实现。

下面是它的一个使用示例:如果您希望某个用户对除其主目录之外的每个目录都具有有限的读取权限,/home/dummy那么您需要创建//home设置x位,否则他甚至无法进入他的主目录。

相关内容