【问题标题】:How to keep track of working directory in FUSE如何在 FUSE 中跟踪工作目录
【发布时间】:2021-07-13 17:27:18
【问题描述】:

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

【问题讨论】:

  • FUSE API 不包含任何了解用户当前目录的方法。我认为您需要在用户空间应用程序中跟踪它。
  • @GandhiGandhi 我只是不知道怎么做。我必须知道用户何时调用“cd”命令,不是吗?

标签: c fuse


【解决方案1】:

libfuse 守护程序以 root 身份运行,而不是在用户在已挂载文件系统上运行的上下文中。这就是为什么你的 fuse 代码中的 getcwd 总是返回根目录的原因。但是,您确实可以使用fuse_get_context()->pid 访问某些调用用户的属性,尤其是他们的 PID 号(请参阅linux how to intercept unauthorized process access to the file,base with FUSE( cryfs or gocryptfs )

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

【讨论】:

猜你喜欢
  • 2015-11-23
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2010-11-15
  • 1970-01-01
相关资源
最近更新 更多