2016-03-18 142 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 –