目录的执行权限与其inode结构之间的关系

目录的执行权限与其inode结构之间的关系

我的问题涉及目录上的读取位和执行位之间的关系。我将首先根据我目前的知识给出我的假设,然后询问我的问题以粗体显示在这些假设的背景下。如有错误的假设,欢迎指正:

  1. 文件和目录都使用 inode 存储。
  2. 文件和目录都有权限(让我们只关注 rwx 位,忘记 Sticky、setuid、setguid(除非它们相关))。
  3. 目录的 inode 数据块的内容存储文件名到 inode 编号的映射。
  4. 目录的读取权限允许用户获取该目录中所有文件的名称列表。
  5. 用户必须知道文件的索引节点号才能访问其内容。更新:这里原始陈述的含义并不反映我想要表达的意思。我的意思更多的是:用户不需要知道文件的索引节点号,但用户必须有权获取给定文件名的索引节点才能获取文件的内容
  6. 目录上的执行权限允许用户“使用”该目录,我理解这具体意味着获取目录的索引节点号(我想确认我对此的理解)。这将允许用户执行诸如 cd 进入该目录之类的操作,这是用户需要执行权限的典型示例。

假设用户必须能够获取目录的“内容”(实际上是目录 inode 数据块的内容)才能访问目录列表,并且用户必须知道目录的 inode 编号才能获得访问权限其内容,为什么用户在没有目录执行权限的情况下仍然可以获得目录列表?看来获取目录 D 的内容列表需要暂时地查找其 inode 编号以读取 inode 数据块的内容。此外,读取权限似乎有必要意味着对目录的执行权限。

答案1

我有一个轻微的误解,这使得我上面的第 6 点无效。为了获取目录中包含的文件的索引节点号,需要目录上的执行(也称为“搜索”)位,但是不是它自己的索引节点号

引用:

您可以这样考虑对目录的读取和执行:目录是数据文件,其中包含每个文件的两条信息:文件名和索引节点号。访问目录中的文件名需要读取权限。如果您已经知道文件名,则需要执行(也称为搜索)权限才能访问目录中文件的 inode。

参考:

  1. https://askubuntu.com/questions/83788/accessing-files-in-a-directory-without-x-permission
  2. https://wpollock.com/AUnix1/FilePermissions.htm
  3. https://superuser.com/questions/442581/why-do-you-need-execute-permission-on-the-parent-directory-to-rename-a-file

相关内容