是否可以通过将 File1 的索引节点号作为参数而不是文件名stat
传递来检索元数据?File1
stat
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) 信息。