在没有root访问权限的情况下向Linux进程提供虚拟文件系统

时间:2015-08-06 21:22:03

标签: linux filesystems ld fuse ld-preload

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

显而易见的答案是FUSE但没有root访问权限我无法加载内核模块,所以FUSE似乎是不可能的(除非有一种方法可以使用LD_PRELOAD吗?)。

接下来最好的事情似乎是LD_PRELOAD,其中包含拦截相关FS调用然后转换它们的内容,就像FUSE在VFS层执行的操作一样。

所以我的问题是:

  1. 是否存在像FUSE这样的LD_PRELOAD文件系统?
  2. 如果我LD_PRELOAD某个进程的某些FS调用拦截是否有任何问题,例如FS拦截不是由forks或children继承?

1 个答案:

答案 0 :(得分:-1)

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

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

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