gpt4 book ai didi

linux - (FUSE) 文件系统何时检查访问权限?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:52 26 4
gpt4 key购买 nike

“Unix 世界”文件系统(如 ext4)在 inode 中为每个文件存储 3 种可用用户所有者、组、其他类型的许可/访问权限列表。我想知道“身份验证”何时发生;我的意思是:

假设我们有一个文件

file.txt     rwx     rw-     ---       st_uid=54    st_gid=99
owner group others

用户 tim uid=100, gid=99

在终端中运行cat file.txt,请求到达文件系统,该文件系统将tim与文件的权限进行比较;

tim 不是所有者:他的 uid=100 与文件的 uid=54 不同;

但是他和文件的gid相同(99),所以他得到的响应是rw-

cat 实际上是一个读取,因此用户收到了内容

这个场景在哪个系统函数中执行?我可以通过实现自定义文件系统来修改它吗?

更新:我的文件系统的唯一目的是让权限更加困惑,并成为概念证明(这是一个研究项目),所以任何关于我应该从哪里开始的想法都将受到高度赞赏。提前致谢!!

最佳答案

对于 FUSE 文件系统,解决方案很简单:FUSE 实现为每个用户对文件系统的请求提供了一个上下文

工作流程如下所示:

  1. 用户发出与文件系统相关的请求(即 ls)
  2. 内核注意到该特定文件系统是使用 FUSE 挂载的
  3. 请求被转发到自定义文件系统(使用 FUSE 创建)。您可以在此处使用 fuse_context 访问请求的元数据这将返回一个 uid、gid、pid。
  4. 现在球在你手上:你可以(几乎)做任何你想做的事,完全控制文件系统和用户的请求

关于linux - (FUSE) 文件系统何时检查访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24212590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com