linux chattr命令

命令简介

chattr 命令用于改变 Linux 文件系统上文件或目录的扩展属性(Extended Attributes)。这些属性提供了比传统文件权限更高级的文件保护机制。

语法

chattr [选项] [模式] 文件或目录

常用选项

选项 说明
-R 递归处理,将指定目录下的所有文件及子目录一并处理
-V 显示指令执行过程
+属性 增加属性
-属性 移除属性
=属性 设置属性(覆盖原有属性)

常用属性

属性 说明
a 只能以追加方式打开文件(适合日志文件)
i 不可修改文件(immutable),无法删除、重命名、修改内容
A 不更新文件的访问时间(atime)
S 同步更新,数据立即写入磁盘
c 压缩存储(某些文件系统支持)

使用示例

1. 设置文件为不可修改
# 设置文件为不可修改
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
2. 设置文件只能追加
# 设置日志文件只能追加
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
3. 递归设置目录属性
# 递归设置目录下所有文件为不可修改
sudo chattr -R +i /important_directory/

# 移除属性
sudo chattr -R -i /important_directory/
4. 组合使用多个属性
# 设置文件为不可修改且不更新访问时间
sudo chattr +iA config_file.conf

# 查看属性
lsattr config_file.conf
# 输出:----i-A-------- config_file.conf

注意事项

  • chattr 命令通常需要 root 权限才能使用
  • 设置 i 属性后,即使是 root 用户也无法修改或删除文件
  • 使用 lsattr 命令可以查看文件的扩展属性
  • 某些属性(如 ai)对系统安全很重要,请谨慎使用
  • 不同的文件系统可能支持不同的扩展属性