tom*_*yvn 7 linux filesystems fuse ld ld-preload
我正在寻找一种向特定 Linux 进程提供用户空间文件系统的方法,但我没有 root 访问权限。
显而易见的答案是 FUSE,但如果没有 root 访问权限,我无法加载内核模块,因此 FUSE 似乎是不可能的(除非有办法 LD_PRELOAD 它?)。
下一个最好的事情似乎是 LD_PRELOAD ,它可以拦截相关的 FS 调用,然后转换它们,就像 FUSE 在 VFS 层所做的那样。
所以我的问题是:
小智 -3
AFAIK LD_PRELOAD 只能帮助您添加一些额外的库(.so),这些库尚未存在于系统的默认路径中(与文件系统无关)。
考虑到Linux中的正常控制流,所有这些系统调用(与文件系统相关)都将在内核空间中结束,并最终到达指定的文件系统内核模块。FUSE 将其路由回用户空间。我认为你不能在不干扰内核级代码的情况下拦截 VFS。
根据您的要求,您可能需要 libc 的包装器,它将这些文件视为特殊情况并绕过系统调用