Ast*_*one 20 ext4 hard-link inode
如果我知道文件的索引节点(inode),但不知道它的路径(或其任何路径),是否可以直接创建到该 inode 的硬链接?
我可以找到文件sudo find / -inum 123546
,然后创建一个硬链接,但这对我的应用程序来说太慢了。
注意我使用的是 ext4 文件系统。
Sté*_*las 25
AFAIK,而不是内核 API。如果存在这样的界面,则它必须仅限于超级用户,否则任何人都可以访问他们没有搜索权限的目录中的文件。
但是你可以debugfs
在文件系统上使用(一旦它被卸载)来做它(假设你有对块设备的写访问权限)。
debugfs -w /dev/block/device
(替换/dev/block/device
为文件系统所在的实际块设备)。
然后,在 的提示下debugfs
,输入
统计< 123 >(使用尖括号,用实际的 inode 编号替换 123)检查文件是否存在(inode 的链接计数大于 0)并且不是目录。
如果一切正常,请输入:
ln < 123 > path/to/newfile创建硬链接(注意路径是相对于文件系统的根目录)。其次是:
米< 123 >增加链接计数(按Enter除链接计数之外的所有字段,您希望在当前值上加 1)。