如何跟踪 FUSE 中的工作目录

How to keep track of working directory in FUSE

所以我正在实施文件系统 FUSE。我想知道调用函数时我位于哪个目录中(特别是“mkdir”)。有办法知道吗?或者当用户使用“cd”命令时跟踪目录的方法? “getcwd”函数总是 returns 根目录。

libfuse 守护程序以 root 用户身份运行,而不是在用户对挂载文件系统进行操作的上下文中。这就是为什么 getcwd 在你的保险丝代码中总是 returns 根目录。但是,您确实可以使用 fuse_get_context()->pid(参见 linux how to intercept unauthorized process access to the file,base with FUSE( cryfs or gocryptfs )

访问某些呼叫用户的属性,特别是他们的 PID 号

使用 PID,您可以通过在 /proc/$pid/cwd 上调用 readlink() 来获取用户的当前目录(参见 https://unix.stackexchange.com/questions/509420/get-working-directory-of-logged-in-users