在FUSE中,如何获取有关用户和尝试在虚拟文件系统中读/写的进程的信息?

在FUSE中,如何获取有关用户和尝试在虚拟文件系统中读/写的进程的信息?

假设我创建了一个名为的 FUSE 文件系统foo并将其安装在/mnt/foo.

如果我有一个名为的用户myuser正在运行vi以打开 中的文件/mnt/foo,那么哪些 FUSE 方法或数据结构包含有关用户和进程的信息?我想要用户/组和进程的实际名称,或者 RUID 和 PID。

我一直盯着 但我找不到我从 doxygen 文档中提到的信息。

答案1

在调用熔断操作期间,您可以调用fuse_get_context()以获取当前调用用户 id、组 id、进程 id 和 umaskfusion_context 结构体

struct fuse_context {
        struct fuse *fuse;
        uid_t uid;
        gid_t gid;
        pid_t pid;
        void *private_data;
        mode_t umask;
};

这是一个文档BSD手册页提到了这个功能。

如果您使用的是低级 API,则需要使用fuse_req_ctx并传递传递fuse_req_t给当前函数的 ,请参阅这个线程fuse_req_ctx 回报一个指向a的指针fusion_ctx 结构体其中有调用过程的uidgidpid、 和。umask

相关内容