2016-03-18 145 views
5

是否可以打开一个知道其inode的文件?通过inode打开文件

ls -i /tmp/test/test.txt 
529965 /tmp/test/test.txt 

我可以提供路径,inode(大于529965),我期待得到一个文件描述符。

+0

可能重复[为什么不能通过inode操作文件?](http://stackoverflow.com/questions/4606774/why-cant-files-be-manipulated-by-inode) – zwol

回答

8

这是不可能的,因为这会在访问控制规则中造成漏洞。您是否可以打开文件不仅取决于自己的访问权限位,还取决于每个包含目录的权限位。 (例如,在您的示例中,如果test.txt为模式644,但包含的目录test为模式700,则只有roottest的所有者可以打开test.txt。)索引节点编号仅标识文件,而不包含包含的目录一个文件位于多个目录中;在“硬链接”上进行读取),以便内核不能仅使用inode编号执行一组完整的访问控制检查。 (一些Unix实现已经提供了非标准的纯根APIs来通过inode编号打开一个文件,绕过了一些访问控制规则,但是如果当前的Linux有这样的API,我就不知道了。)

+0

可能相关: http://stackoverflow.com/a/31432662/544721 –