Stat命令虽无“Inode指纹”概念,但可通过inode号、三时间戳(Access/Modify/Change)及权限等元数据识别敏感文件异常变动;基线记录需包含%i %y %x %z %n,并存于只读介质;检测时重点核查Modify早于Change、Access异常频次,结合find -inum反查硬链接,并用%d %i双因子校验跨分区唯一性。

Stat命令本身不提供“Inode指纹”这一概念,但可以结合inode号、时间戳和权限等关键元数据,实现对敏感文件异常变动的快速识别与定位。核心思路是:同一个文件的inode号在生命周期内不变(除非被删除重建),而访问时间(Access)、修改时间(Modify)、状态变更时间(Change)会随操作实时更新。通过比对这些字段的突变,就能发现非预期的读写或属性更改。
抓取并记录基线inode状态
对目标敏感目录(如/etc、/usr/bin、/var/www)中的关键文件,提前用stat批量导出inode号与三类时间戳:
- 执行:
stat -c "%i %y %x %z %n" /etc/passwd /etc/shadow /etc/sudoers > /tmp/inode_baseline.txt -
%i是inode号,%y(Modify)、%x(Access)、%z(Change)分别输出完整时间,%n是文件名 - 建议将基线保存在只读位置(如挂载为ro的USB盘),防止被篡改
检测时间戳异常偏移
当怀疑文件被篡改时,重新运行stat并与基线比对。重点关注以下两类异常:
- Modify时间早于Change时间:违反文件系统逻辑(Change包含权限、所有者等元数据变更,必晚于或等于Modify),通常表明时间被人工回拨或日志伪造
- Access时间频繁更新但无业务依据:例如凌晨3点/etc/shadow被反复读取,可能意味着暴力破解或后门扫描
- 可用脚本快速筛查:
stat -c "%n %z %y" /etc/* 2>/dev/null | awk '$3 != $4 {print $0}'—— 找出Change与Modify不一致的文件
利用inode号反查硬链接与隐藏路径
攻击者常通过创建硬链接绕过常规文件监控。同一inode号可能对应多个路径,stat无法直接列出全部,需配合find:
- 先获取可疑文件inode号:
stat -c "%i" /etc/passwd→ 得到例如131073 - 再全盘搜索同inode文件:
find / -inum 131073 2>/dev/null - 若返回多个路径(如
/etc/passwd和/tmp/.back_passwd),说明存在隐蔽硬链接,需立即核查
结合st_dev校验设备唯一性
单靠inode号不够安全,因为不同分区的inode号可能重复。真正的唯一标识是st_dev + st_ino组合:
- 用stat -c "%d %i" 查看设备号(st_dev)和inode号(st_ino)
- 例如输出
253 131073,代表该inode位于设备253(通常是/dev/sda1)上 - 排查跨分区伪装时,必须同时验证两者,避免误判其他挂载点的同号inode


















