通过inode打开文件

是否有可能打开一个文件知道它的inode?

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

我可以提供path,inode(529965以上),我期待得到一个文件描述符。

这是不可能的,因为这会在访问控制规则中造成漏洞。 是否可以打开文件不仅取决于其自己的访问权限位,还取决于每个包含目录的权限位。 (例如,在你的例子中,如果test.txt是模式644,但是包含目录test是模式700,那么只有roottest的所有者才能打开test.txt 。)Inode数字只能识别文件,而不能识别包含的目录(一个文件可能位于多个目录中;在“硬链接”上进行读取),所以内核不能只执行一个inode编号的访问控制检查。

(一些Unix实现已经提供了非标准的纯根API来通过inode编号来打开文件,绕过了一些访问控制规则,但是如果当前的Linux有这样的API,我不知道。