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

Cai*_*aio 41 linux bash

文件权限:

chmod 664 myFile // rw-rw-r--
Run Code Online (Sandbox Code Playgroud)

对于文件夹:

chmod 774 myFolder // rwxrwxr--
Run Code Online (Sandbox Code Playgroud)

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

这是什么原因?

Dae*_*yth 50

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

对于目录,write 允许创建新文件并删除其中的文件。

Read 允许您列出其中的文件。

Execute 允许您输入它并访问其中的文件(或其他目录)。

  • 一种简单的记忆方法是将执行想象成双击某物。当您双击目录(或`cd`)时,您输入(执行)它。 (4认同)
  • 请注意,仅对目录的写访问权限不会让您创建新文件。您还需要目录的执行权限才能执行此操作。 (3认同)

Zaz*_*Zaz 26

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

$ 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!
Run Code Online (Sandbox Code Playgroud)

chmod联机帮助页:

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