目录执行权限和文件读取权限的区别

3
什么是目录的执行权限和目录内部的读取权限之间的区别?如果两者都设置了,那么我们只能读取文件。
3个回答

6
阅读权限让我们可以读取目录,获取目录中所有文件名的列表。执行权限让我们能够通过目录,当它是我们正在尝试访问的路径名的组成部分时。
例如: 1)如果您拥有只有执行权限的目录,则可以在路径解析中使用该目录来访问文件名,但您将无法列出/阅读目录中的文件。 2)如果您只拥有阅读权限的目录,则可以列出/阅读目录中的文件,但不允许您将该目录用于路径解析。

2
  1. 读取: 允许受影响的用户列出目录中的文件
  2. 执行: 允许受影响的用户进入目录。 (即使某个目录成为您的当前工作目录)。
    需要在目录上执行才能访问其中文件的inode信息。

这个描述可能有些令人困惑,我添加了一些示例来澄清它。

假设我有以下树形结构:

dir0
├── dir1
│   ├── dir2
│   │   └── test2.txt
│   └── test1.txt
└── testFile.txt
  • 我从dir0目录中执行chmod 100 dir1/命令。
    现在,用户对dir1目录只有执行权限。
    1. 现在我可以使用cd命令进入dir1目录。但是,
    2. ls命令会给出以下错误信息:
      ls: cannot open directory '.': Permission denied
      用户可以进入该目录,但无法列出其中的内容
  • 我从dir0目录中执行chmod 400 dir1/命令。
    现在用户只有读取权限。
    1. 现在如果我尝试执行cd dir1命令,
      我将得到以下错误信息:
      bash: cd: dir1/: Permission denied
    2. 但是,ls dir1命令仍然可以工作,尽管它会显示结果和错误消息。
      ls: cannot access 'dir1/test1.txt': Permission denied
      ls: cannot access 'dir1/dir2': Permission denied
      dir2 test1.txt
      请注意,它正确地列出了最后一行的内容。
      错误是因为没有执行权限,用户无法通过该目录。

1
如果设置了读取权限,您可以读取(列出)该目录。如果设置了x权限,则可以使用经过该目录的路径。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接