Linux 文件属性详解:chattr 和 lsattr

1. 文件属性概述

Linux 文件系统(如 ext4、XFS)支持扩展属性(Extended Attributes),允许为文件和目录设置额外的控制标志。这些属性通过 chattr 修改,通过 lsattr 查看。

1.1 常见文件属性

属性 说明 适用场景
a (append) 仅允许追加内容,不能修改或删除 日志文件保护
i (immutable) 不可修改、删除、重命名或创建硬链接 系统关键文件保护
A (no atime) 不更新访问时间(atime) 减少磁盘 I/O
S (synchronous) 同步写入磁盘(立即写入,不缓存) 高安全性数据
d (no dump) 排除在 dump 备份工具之外 临时文件

2. chattr 命令详解

2.1 基本语法

chattr [选项] [+/-/=属性] 文件/目录
  • +:添加属性
  • -:移除属性
  • =:设置精确属性(覆盖原有)

2.2 重点属性 +i(不可变)

作用

  • 文件:禁止修改、删除、重命名或创建硬链接。
  • 目录:禁止增删文件或修改目录内文件。

示例

sudo chattr +i /etc/passwd    # 保护关键文件
sudo chattr +i -R /etc/nginx  # 递归保护目录

解除不可变

sudo chattr -i /etc/passwd

3. lsattr 命令详解

3.1 基本语法

lsattr [选项] 文件/目录

常用选项

  • -R:递归列出子目录属性
  • -d:仅显示目录本身属性(不显示内容)

示例

lsattr /etc/passwd

输出示例:

----i--------- /etc/passwd
  • i 表示文件被设为不可变。

4. +i 属性的实际应用

4.1 保护系统关键文件

sudo chattr +i /etc/sudoers     # 防止误改sudo配置
sudo chattr +i /etc/resolv.conf # 防止DNS配置被覆盖

4.2 防止病毒/恶意软件篡改

sudo chattr +i /usr/bin/*       # 保护二进制文件

4.3 调试时锁定文件

chattr +i debug.log            # 保留日志不被覆盖

5. 注意事项

  1. 需要 root 权限chattrlsattr 通常需 sudo
  2. 文件系统支持:仅 ext2/3/4、XFS、Btrfs 等支持扩展属性。
  3. 优先级+i 属性高于普通权限,即使 root 也无法直接修改。
  4. 备份恢复:属性可能不被 tarrsync 保留,需手动恢复。

6. 属性冲突示例

操作 +i +i 错误提示
修改文件 成功 失败 Operation not permitted
删除文件 成功 失败 rm: cannot remove 'file': Permission denied
chmod 成功 失败 chmod: changing permissions of 'file': Operation not permitted

7. 快速参考

命令 作用 示例
chattr +i 设为不可变 sudo chattr +i file
chattr -i 取消不可变 sudo chattr -i file
lsattr 查看属性 lsattr /etc/passwd

提示:生产环境中谨慎使用 +i,避免影响正常运维!

作者:admin  创建时间:2025-05-29 09:41
最后编辑:admin  更新时间:2025-05-29 13:26