lsattr 是什么
lsattr 列出文件或目录在 ext 系列文件系统上的属性位,最常用的是 i(immutable,不可修改)与 a(append-only,只能追加)。它与 chattr 是一对:chattr 负责设置属性,lsattr 负责查看结果。排查「root 都删不掉的文件」「日志被意外清空」这类问题时,它是必须过一遍的一站。
基本信息
| 所属 | e2fsprogs |
|---|---|
| 语法 | lsattr [选项] 文件... |
| 常用选项 | -R 递归、-d 只看目录本身、-a 含隐藏文件 |
| 常见属性 | i 不可变、a 只能追加、e extent(ext4 下几乎总在) |
典型使用场景
- 文件删不掉或改不动时,确认是否被设为不可变
- 审计安全加固效果:关键配置是否已加不可变保护
- 确认日志文件的只能追加属性是否已经生效
- 备份恢复后清理遗留的不可变属性
- 递归扫描某个目录,找出所有被锁定的文件
- 变更配置前先检查有没有属性位在阻挡修改
常用示例
常用示例
lsattr /etc/passwd # 查看单个文件的属性位
lsattr -R /etc | grep -- '----i' # 递归找出被锁定的文件
lsattr -d /var/log # 只看目录本身属性
lsattr -a -d /etc/ssh # 含隐藏项查看目录
lsattr /var/log/secure.log # 确认是否只能追加
chattr +i /etc/resolv.conf # 加不可变,再用 lsattr 验证
chattr -i /etc/resolv.conf # 解除后才能修改
find /etc -type f -exec lsattr {} + | grep -- '----i' | head # 精细扫描属性字母读法
| 字母 | 含义 | 典型场景 |
|---|---|---|
| i | immutable 不可修改 | 保护关键配置不被改动 |
| a | append-only 只能追加 | 日志防删除,但不能编辑 |
| e | extent 区段映射 | ext4 下几乎总是存在 |
| d | 不参与 dump 备份 | 与备份策略相关 |
| 短横线 | 该位置未设置属性 | 前四位全为短横线表示无特殊属性 |
lsattr 对目录默认列出目录内容,只看目录本身要加 -d;批量扫描前先明确对象,否则输出范围与预期不符。
属性位是 ext 系列文件系统的能力:XFS 只支持其中一部分,lsattr 的结果与 ext4 并不一致,跨文件系统照搬经验会得出错误结论。
不可变属性连 root 也挡:必须先 chattr -i 才能改动。遇到「权限看着正常却改不了文件」,先查属性位,再查 SELinux 与挂载是否只读。