如何在Linux上通过inode访问文件

有没有任何用户空间的API或第三方内核模块,可以帮助通过Linux上的inode访问文件?

我试图执行一些像这样的事情:

int read_file_by_ino(int ino, int pos, int size, char* buf); int write_file_by_ino(int ino, int pos, int size, const char* buf); int readdir_by_ino(...); int stat_by_ino(...); ... 

该程序预计在root用户下运行,因此没有安全要求进行权限检查。

谢谢!

不知道我是否正确理解你的问题,但:
您可以从“/”目录开始,然后递归执行(或任何与此有关的循环)。 将inode值与strcut stat.ino_t进行比较。 一旦找到它,打开路径/文件。

我不知道是否有一个更简单的方法,但你可以用bash做到这一点。 用ls -i命令你也可以看到inode,

 $ ls -i 11147622 file.txt 

第一列是inode号,blow命令显示当前目录中的inode

 $ ls -i | awk {'print $1'} 

所以你需要检查/子目录中的inode,直到找到它

 ls -iR / 

它显示所有的子目录,那里有inode号码的文件

现在你应该从/开始,并使用awk命令或者切换命令来获得第一列(inode编号在第一列中),然后将它与要查找的inode进行比较。

我在这里发现了关于类似主题的问题。

总结一下,看看这些命令:

  • find /path/to/mountpoint -inum <inode number>
  • sudo debugfs -R 'ncheck 393094' /dev/sdaX 2>/dev/null

希望这可以帮助你进一步调查。