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

时间:2014-06-13 19:26:34

标签: linux unix linux-kernel filesystems fuse

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

假设我们有一个文件

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

用户tim uid=100gid=99

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

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

但他与文件(99)具有相同的gid,因此他得到的回复是rw-

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

执行此方案的系统功能是什么?我可以通过实现自定义文件系统来修改它吗?

更新 我的文件系统的唯一目的是更多地使用权限并且是一个概念证明(这是一个研究项目)所以任何关于我应该从哪里开始的想法将受到高度赞赏。在此先感谢!!

1 个答案:

答案 0 :(得分:3)

对于FUSE文件系统,解决方案是直截了当的: FUSE实现为每个对文件系统发出的用户请求提供上下文;

工作流程如下所示:

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