chattr 命令用于改变 Linux 文件系统上文件或目录的扩展属性(Extended Attributes)。这些属性提供了比传统文件权限更高级的文件保护机制。
chattr [选项] [模式] 文件或目录
| 属性 | 说明 |
|---|---|
a |
只能以追加方式打开文件(适合日志文件) |
i |
不可修改文件(immutable),无法删除、重命名、修改内容 |
A |
不更新文件的访问时间(atime) |
S |
同步更新,数据立即写入磁盘 |
c |
压缩存储(某些文件系统支持) |
# 设置文件为不可修改
sudo chattr +i important_file.txt
# 尝试删除(会失败)
rm important_file.txt
# 输出:rm: cannot remove 'important_file.txt': Operation not permitted
# 查看文件属性
lsattr important_file.txt
# 输出:----i--------- important_file.txt
# 设置日志文件只能追加
sudo chattr +a /var/log/app.log
# 可以追加内容
echo "New log entry" >> /var/log/app.log
# 但不能修改或删除文件内容
echo "Modify" > /var/log/app.log
# 输出:bash: /var/log/app.log: Operation not permitted
# 递归设置目录下所有文件为不可修改
sudo chattr -R +i /important_directory/
# 移除属性
sudo chattr -R -i /important_directory/
# 设置文件为不可修改且不更新访问时间
sudo chattr +iA config_file.conf
# 查看属性
lsattr config_file.conf
# 输出:----i-A-------- config_file.conf
chattr 命令通常需要 root 权限才能使用i 属性后,即使是 root 用户也无法修改或删除文件lsattr 命令可以查看文件的扩展属性a 和 i)对系统安全很重要,请谨慎使用