4

我正在寻找一种将用户空间文件系统呈现给特定 Linux 进程的方法,但我没有 root 访问权限。

显而易见的答案是 FUSE 但没有 root 访问权限我无法加载内核模块,因此 FUSE 似乎是不可能的(除非有办法 LD_PRELOAD 它?)。

下一个最好的东西似乎是 LD_PRELOAD,它可以拦截相关的 FS 调用,然后对其进行转换,就像 FUSE 在 VFS 层所做的那样。

所以我的问题是:

  1. 是否存在像 FUSE 这样的支持 LD_PRELOAD 的文件系统?
  2. 如果我 LD_PRELOAD 某个进程的某些 FS 调用拦截,是否有任何陷阱,例如 FS 拦截可能不是由叉子或子代继承?
4

1 回答 1

-1

AFAIK LD_PRELOAD 只能帮助您添加一些额外的库(.so),这些库在默认路径中尚未出现在系统中(与文件系统无关)。

考虑到 linux 中的正常控制流程,所有这些系统调用(与文件系统相关的)都将最终进入内核空间,并最终到达指定的文件系统内核模块。FUSE 将其路由回用户空间。我不认为你可以在不干扰内核级代码的情况下在 VFS 上进行拦截。

根据您的要求,您可能需要对 libc 进行包装,它将这些文件视为特殊情况并绕过系统调用

于 2015-08-09T18:27:07.770 回答