这个“stat [选项]...inode number...”可能吗?

这个“stat [选项]...inode number...”可能吗?

是否可以通过将 File1 的索引节点号作为参数而不是文件名stat传递来检索元数据?File1stat

stat [option - any doing this?] [inode number of File1]

代替

stat /home/$USER/File1

我的意思是直接的,而不是使用任何管道和命令替换技巧。

答案1

像这个?

sudo debugfs -R "stat <237770>" /dev/sda1

对我来说,它给了我这个输出:

Inode: 237770   Type: regular    Mode:  0644   Flags: 0x80000
Generation: 3934018986    Version: 0x00000000:00000001
User:  1000   Group:  1000   Project:     0   Size: 3878
File ACL: 0
Links: 1   Blockcount: 8
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x65844b48:c3cc9104 -- Thu Dec 21 15:27:20 2023
 atime: 0x65844b4f:d21ab1e8 -- Thu Dec 21 15:27:27 2023
 mtime: 0x65844b48:c3cc9104 -- Thu Dec 21 15:27:20 2023
crtime: 0x6584497f:07719290 -- Thu Dec 21 15:19:43 2023
Size of extra inode fields: 32
Inode checksum: 0x6a9c083c
EXTENTS:
(0):2478609

答案2

不,根据设计,除了通过文件路径之外无法访问文件,从而允许它绕过访问控制,因此这将是一个安全缺陷。

root可以通过使用诸如debugfs(对于 ext4 文件系统)包含文件系统的块设备上(如果有)有效地绕过内核来检查文件系统结构,但在已安装的文件系统上执行此操作不一定可靠;或者使用诸如 systemtap 或 bpftrace 之类的内核工具,尽管即使在给定内核的两个版本之间,这也可能是不可移植的。

所以你应该使用类似的东西:

find /root/of/filesystem -xdev -inode 12345 -exec stat {} ';'

查找通向具有该特定 inode 的文件的路径并调用stat它们。

使用 GNU find,您还可以用来-printf报告有关文件的 stat(2) 信息。

相关内容