不可变属性是什么
ext 系列文件系统支持 inode 属性位,其中 i(immutable)会让文件连 root 都改不了、删不掉,必须先用 chattr -i 解除。攻击者常给木马、恶意计划任务文件加 i 位,防止管理员顺手清理或被升级覆盖;目录加 i 则阻止在其中新建和删除文件。典型表现是 rm 报 Operation not permitted,即使权限位看起来是 777。
基本信息
| 适用平台 | Linux(ext2/3/4 支持完整,XFS 仅部分属性) |
|---|---|
| 查看命令 | lsattr 文件名 / attr -l 文件名 |
| 常见属性 | i 不可变、a 只允许追加、e extent(ext4 默认) |
| 处置命令 | chattr -i 解锁后才能删除或修改 |
| 目录同样可加 | 目录上的 i 会阻止新建与删除文件 |
| 不支持场景 | tmpfs、部分网络文件系统不保留属性位 |
典型使用场景
- 删除木马文件或恶意计划任务时报 Operation not permitted
- 排查「权限明明是 777 却改不动」的异常现象
- 检查 cron、init.d、systemd 相关目录是否被属性位锁死
- 处置前固定痕迹:属性位本身就是攻击者留下的证据
- 排查升级失败原因,被加 i 的系统文件会让包管理器覆盖失败
查找并解锁被加锁的文件
查找并解锁被加锁的文件
lsattr /usr/bin/* /etc/cron.d/* /etc/cron.hourly/* 2>/dev/null | grep -- '---i'
lsattr -d /etc/cron.d /etc/init.d 2>/dev/null # 目录本身是否被锁
attr -l /path/suspect.bin 2>/dev/null # 另一种查看方式
sha256sum /path/suspect.bin # 解锁前先固定哈希
chattr -i /path/suspect.bin # 解除不可变
lsattr /path/suspect.bin # 确认标志已清除
rm -f /path/suspect.bin && echo removed # 再进行删除常见属性读法
| 属性 | 含义 | 排查价值 |
|---|---|---|
| i | 不可变:不能修改、删除、改名 | root 也受约束,攻击者最常使用 |
| a | 只允许追加 | 内容只能往后加,日志类文件常见 |
| e | extent 映射 | ext4 默认属性,属正常现象 |
| c | 内核透明压缩 | 老系统上常见,需解释来源 |
| d / s | no dump / 安全删除 | 少见,出现要核查是谁设置的 |
属性位保存在 inode 上,文件复制到别的文件系统后不会跟着走:处置时以本机 lsattr 输出为准,不要直接搬用其他主机的结论。
解锁前一定先记录:lsattr 原始输出、文件哈希、mtime 与所在目录清单。属性位本身就是攻击痕迹,一旦清除就再也无法证明当时被加过锁。