lsattr用于查看Linux文件系统底层隐藏属性,而非rwx权限;核心属性包括i(不可变,root也无法删除)、a(仅追加)、A(不更新atime)、e(extent格式,默认);常用选项有-d(查目录自身)、-a(含隐藏文件)、-R(递归);输出为16字符标志位,如----i--------e--中第5位i表示已锁定。
lsattr 不是用来查看常规的 rwx 权限,而是专门查 Linux 文件系统底层的“隐藏属性位”——这些属性独立于 chmod 设置的权限,能真正锁死文件行为,比如 root 都删不掉。
输出中出现的字母不是随便排的,每个都对应一种硬性控制:
别只敲 lsattr 文件名,不同场景要用不同选项:
lsattr filename
-d,例如 lsattr -d /etc
-a
-R,比如 lsattr -R /var/log
输出格式是固定 16 位字符 + 文件路径,例如:
----i--------e-- /etc/shadow
从左到右第 5 位是 i,说明已加不可变锁;最后两位是 e-,表示使用 extent 存储且无其他特殊标记。中间全是 - 就代表没设额外属性。
注意:如果看到空白或报错 “Operation not supported”,大概率是文件系统不支持(如 FAT32、NTFS 挂载卷),或者文件在容器/网络文件系统里,这类环境通常不提供扩展属性支持。
lsattr 只负责“看”,真正起作用得靠 chattr:
sudo chattr +i /etc/hosts
sudo chattr -i /etc/hosts
sudo chattr +ia /var/log/app.log
sudo chattr -R +i /opt/critical-app
操作必须用 root 权限,普通用户执行会提示 Permission denied。