chattr
和 lsattr
是 Linux 系统中用于管理文件/目录扩展属性的命令,主要用于设置或查看文件的特殊属性(如防删除、防修改等)。以下是详细使用方法:
作用:查看文件/目录的扩展属性。
语法:
lsattr [选项] [文件/目录]
常用选项:
- -a
:显示所有文件(包括隐藏文件)。
- -d
:仅显示目录本身的属性(而非内容)。
- -R
:递归显示子目录的属性。
示例:
lsattr file.txt # 查看单个文件的属性
lsattr -a /home # 显示目录下所有文件(含隐藏文件)属性
lsattr -d /var/log # 查看目录本身的属性
lsattr -R /etc # 递归查看/etc下所有文件的属性
输出示例:
----i---------e---- /etc/passwd
e
表示文件使用 ext4 文件系统的扩展属性。i
表示文件不可修改(Immutable)。作用:修改文件/目录的扩展属性(需 root 权限)。
语法:
chattr [操作符][属性] [文件/目录]
操作符:
- +
:添加属性
- -
:移除属性
- =
:强制设置为指定属性(覆盖原有)
常用属性:
属性 | 作用 |
---|---|
a |
仅允许追加内容(不可删除/修改已有内容) |
i |
不可修改/删除/重命名/创建硬链接(Immutable) |
A |
不更新文件的访问时间(atime) |
c |
文件压缩存储(需文件系统支持) |
s |
安全删除(文件被删除时用零填充磁盘空间) |
u |
文件被删除后保留数据(可恢复) |
e |
文件使用 ext4 的扩展存储(默认启用,无需手动设置) |
示例:
chattr +i /etc/passwd # 防止/etc/passwd被修改或删除
chattr -i /etc/passwd # 解除不可修改属性
chattr +a /var/log/audit.log # 只允许追加日志(不可删除)
chattr -R +A /var/www/html # 递归禁用目录下所有文件的atime更新
chattr
通常需要 root
权限。/etc/passwd
)设置 +i
可增强安全性。chattr -i -a
解除限制。Q:设置了 +i
后无法删除文件?
A:需先运行 chattr -i 文件名
解除属性。
Q:lsattr
显示 e
属性?
A:这是 ext4 文件的默认标记,无需处理。
Q:属性不生效?
A:检查文件系统是否支持(如 NTFS/FAT 不支持)。
通过合理使用这两个命令,可以有效保护关键文件不被误删或篡改。