chattr
是 Linux 系统中的一个命令,它允许用户设置或删除文件的特殊属性,以影响文件的行为和保护文件不被意外修改或删除。即使是root用户权限时依旧不能够实现删除和修改操作。
命令描述
chattr 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
符号模式有+-=[ASacdisu]几种格式.
操作符`+'用来在文件已有属性的基础上增加选定的属性; `-'用来去掉文件上的选定的属性;而`='用来指定该文件的唯一属性.
字符`ASacdisu'用作文件新属性的选项: 不更新atime(A),同步更新(S),只能添加(a), 压缩(c),不可变(i),不可转移(d),删除保护(s)以及不可删除(u).
命令选项
-R 递归地修改目录以及其下内容的属性. 如果在递归目录时遇到了符号链接,遍历将跳过.
-V 详尽地给出chattr的输出信息并打印出程序的版本.
-v version 设置文件系统的版本.
常用选项和参数
+a
:将文件标记为只能追加数据。任何对文件内容的修改都只能在文件末尾进行,不能覆盖文件中的现有数据。适用于日志文件等场景。
chattr +a filename
-a
:移除文件的追加数据属性。
chattr -a filename
+i
:将文件标记为不可变。即使是 root
用户也无法修改、删除或重命名文件,文件也不能被写入。此属性常用于保护系统文件和关键配置文件。
chattr +i filename
-i
:移除文件的不可变属性,使文件可以被修改、删除和重命名。
chattr -i filename
查看对应的已添加属性:
lsattr filename
实测使用
使用命令将test.c文件进行添加属性i:
sudo chattr +i test.c
尝试删除该文件:
rm -rf bool.c
删除结果:
$sudo rm -rf test.c
rm: 无法删除"test.c": 不允许的操作