-1

我试图了解文件系统和内核的相关方式,以及它们如何协同工作,特别是关于权限。

(我知道,事实上,文件系统在内核空间中运行,但在这种情况下,我将它们视为两个独立的实体。)

当 Bob (UID=1001, GID=1001, groups="humans, minor") 尝试读取 "file.txt" 时,比如说, "rwx r-- --x" 和 "owner = Alice" 和 " group owner = minor" -- 内核和文件系统中的哪一个允许访问?

文件系统是否具有将 Bob 的组的整个列表、Bob 的 UID 和内核发送的其他内容作为参数的函数(这将允许文件系统确定 Bob 是否可以读取目标文件)?

此外,如果这是它的工作方式——内核如何知道文件系统需要扩展/特殊属性的数据?例如,在 Synology 扩展属性(ext4/btrfs)的情况下。

非常感谢您阅读的任何帮助/资源。

4

1 回答 1

0

祝你有美好的一天!

在我看来——当内核收到用户的请求(例如,打开文件)时,它会分析用户的访问权限。如果它们是正确的——内核管理硬件以向用户提供请求的数据。

在计算机系统的上下文中(由内核和文件系统组成;还包括用于输入、存储和输出数据的硬件),文件系统本身不可能做出决策(就像内核一样) ; 它只是一个信息结构,以操作规则定义的方式编写(内核必须有权访问,以便正确交互;这些规则可能存储在内核中)。因此,内核决定提供访问(如果要满足请求,内核操作数据)。文件系统是一组存储在某些硬件上的数据和一个软件部分(作为对内核的指令:如何操作硬件的物理层,也许,如何决定在逻辑层上提供访问); 但决定性的作用,再次,

该变体只是一个变体,它可能在各种操作系统实现中有所不同。我不知道,它是在哪一个中实现的(这是操作系统“Linux”还是操作系统“Windows”方法,或者可能不是)。

例如,如果我们描述了一个用户连接的远程云存储——这个存储(其中的东西充当描述的内核;也许是它的内核)决定是否授予访问权限;并且本地内核充当用户,远程系统就像内核一样。

另外,我在“堆栈溢出”上也看到了一个类似(或相对)的问题:打开文件实际上是做什么的?——也许,你会在那里找到一些额外的信息。

于 2016-07-13T05:40:06.813 回答