lsattr是Linux中查看ext2/ext3/ext4文件系统底层隐藏属性的核心命令,输出16位固定顺序标志位(如----i---------e--),第5位i表示不可变、第7位a表示仅追加、第10位d表示不备份、第13位e表示extent格式,默认启用。

lsattr 是 Linux 运维中查看文件底层扩展属性(ext2/ext3/ext4 等文件系统支持的隐藏标志位)的核心命令。它不显示常规权限(rwx),而是展示由 chattr 设置的、直接影响文件行为的底层控制位,比如不可修改(i)、只追加(a)、不备份(d)等。
看清输出格式:16 位标志位含义
运行 lsattr file.txt 后,典型输出为:
----i---------e--- /path/to/file.txt
这串 16 个字符(部分版本显示 12 或 18 位,但核心前几位一致)从左到右每位置对应一个属性标志:
- 第 5 位是 i → 表示 immutable(不可修改/删除/重命名)
- 第 7 位是 a → 表示 append-only(只能追加,不能覆盖或截断)
- 第 10 位是 d → 表示 no dump(dump 工具跳过该文件)
- 第 13 位是 e → 表示 extent format(现代 ext4 默认启用,一般不用干预)
- 其他常见位:A(不更新 atime)、S(同步写入)、c(透明压缩)
“-”表示未启用,“字母”表示已启用。注意:顺序固定,不能靠字母是否存在来模糊判断,必须按位看。
查单个文件或关键配置项
直接指定路径即可精准定位,尤其适合检查系统关键文件是否被加固:
- lsattr /etc/passwd —— 查看用户数据库是否设了 i 属性防篡改
- lsattr /boot/vmlinuz* —— 检查内核镜像是否启用压缩(c)或不可变(i)
- lsattr ~/.bashrc —— 即使文件名以点开头,也能直接查,无需额外选项
批量排查:递归 + 隐藏文件 + 筛选
日常运维常需扫描整个目录树,尤其是日志、配置或用户主目录:
- lsattr -a /etc —— 显示 /etc 下所有文件,含 .bashrc、.profile 等隐藏配置
- lsattr -R -a /var/log —— 递归查日志目录全部内容(含子目录和 .log.1 等隐藏归档)
- lsattr -R /app | grep 'i$' —— 找出所有末尾带 i 的行(即设置了不可变属性的文件)
- lsattr -d /tmp —— 只查 /tmp 目录自身的属性(如是否设了 t 或 T 标志),不进里面列文件
验证与调试技巧
有些属性需结合 chattr 使用才生效,单独 lsattr 不会报错但可能“查不到”:
- 若执行 lsattr .bashrc 没输出,先确认文件存在且有读权限;再检查是否在错误路径下执行
- 遇到 “Operation not supported” 错误,说明文件系统不支持(如 NFS、tmpfs、btrfs 默认不兼容 i/a 属性)
- 想看更直观的属性名(非字母缩写),加 -l:如 lsattr -l /etc/shadow 可能输出 immutable, no_dump
- 需要比对文件变更,可用 lsattr -v 查 generation number(版本号),类似 inode 的序列号


















