# chattr - 改变文件的属性
用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式。
这个命令只有超级用户才能使用。这个指令适用于ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs系统。
# 适用范围
RedHat
RHEL
Ubuntu
CentOS
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux
# 语法
chattr [-RVf] [ -v version ] + | - | =[属性] file
运算符‘+‘使所选属性被添加到文件的现有属性中;’-’使它们被删除;‘=’使它们成为文件所拥有的唯一属性。
# 选项
-R # 递归的方式修改目录及其子目录下的文件属性
-V # 显示详细执行过程
-f # 跳过错误信息
-v version # 设置文件或者目录的版本号
# 属性
a # 只能以append的方式打开
A # 最后修改时间不被记录
c # 对文件进行压缩,而读取的时候会得到解压数据
D # 同步目录更新
d # 不进行备份
E # 压缩文件有错误,这个属性不能被用户手动修改
e # 文件使用扩展区来映射到磁盘
-I # 目录使用hash树来索引,这个属性不能被用户手动修改
h # 文件大小超过2TB,这个属性不能被用户手动修改
i # 文件不能被修改,但是可以删除或者重命名
s # 将数据块清零并存入磁盘
S # 同步更新。将文件修改之后,结果写入磁盘
u # 预防意外删除
-T # 目录层次结构顶部
-X # 压缩原始存取。虽然lsattr(1)可以显示它,
# 但它目前不能使用chattr(1)进行设置或重置。
-Z # 压缩脏文件。虽然它可以由lsattr(1)显示,
# 但不能使用chattr(1)设置或重置
+<属性> # 开启文件或目录的该项属性;
-<属性> # 关闭文件或目录的该项属性;
=<属性> # 指定文件或目录的该项属性。
# 举例
用chattr命令防止系统中某个关键文件被修改:
[sogrey@bogon 文档]$ chattr +i /etc/fstab
/home/sogrey/文档
然后试一下rm
、mv
、rename
等命令操作于该文件,都是得到Operation not permitted
的结果。
让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:
[sogrey@bogon 文档]$ chattr +a /data1/user_act.log
/home/sogrey/文档
增加a属性,设置版本号。显示详细的执行过程:
[sogrey@bogon demos]$ chattr -v 1 -V +a test.txt
chattr 1.45.0 (6-Mar-2019)
test.txt的标志被设为 -----a--------e-----
chattr: 不允许的操作 设置 test.txt 的标志时
[sogrey@bogon demos]$ > test.c
[sogrey@bogon demos]$ chattr -Vv 2 -a +c test.c
chattr 1.45.0 (6-Mar-2019)
test.c的标志被设为 --------c-----e-----
test.c 的版本被设置为 2
[sogrey@bogon demos]$