文件系统(和)权限的实现

时间:2016-07-12 19:34:11

标签: permissions filesystems kernel user-permissions xattr

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

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

当Bob(UID = 1001,GID = 1001,groups =“human,minor”)尝试读取“file.txt”时,假设“rwx r---x”为“owner = Alice” “和”group owner = minor“ - 内核和内核中的哪一个 文件系统,允许访问?

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

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

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

1 个答案:

答案 0 :(得分:0)

祝你好运!

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

在计算机系统的环境中(由内核和文件系统组成;还包括输入,存储和输出数据的硬件),文件系统本身不可能做出决定(如内核做));它只是一个信息结构,以操作它的规则定义的方式编写(内核必须具有访问权限才能正确交互;这些规则可以存储在内核中)。因此,内核决定提供访问(如果它是为了满足请求,则内核操作数据)。文件系统是一组硬件上存储的数据和软件部分(作为内核的指令:如何操作硬件的物理层,以及如何决定逻辑层上的访问提供) );但是,决定性的角色又取决于内核(必须符合所有提供的规则)。

此变体只是一种变体,它可能在各种操作系统实现中有所不同。我不知道,它实现了哪些(无论是OS“Linux”还是操作系统“Windows”方法,或者可能不是)。

例如,如果我们描述用户连接的远程云存储 - 这个存储(其中的某个内容充当描述的内核;可能是其内核)决定是否授予访问权限;并且本地内核充当用户,远程系统就像一个内核。

另外,我在这里看到了类似(或相对)的问题,也就是“Stack Overflow”:What does opening a file actually do? - 也许,你会在那里找到一些额外的信息。