如何在 FUSE 中跟踪工作目录

问题描述

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

解决方法

libfuse 守护进程以 root 身份运行,而不是在用户操作已挂载的文件系统的上下文中。这就是为什么您的熔断器代码中的 getcwd 总是返回根目录的原因。但是,您确实可以使用 fuse_get_context()->pid(请参阅 linux how to intercept unauthorized process access to the file,base with FUSE( cryfs or gocryptfs )

访问调用用户的某些属性,尤其是他们的 PID 号

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...