Linux命令之chattr命令

一、chattr命令简介

  chattr命令用于更改文件或目录的属性,包括不可修改属性、同步属性、追加属性、无尽属性、压缩属性、无尽属性、不可删除属性等。chattr命令只能由超级用户或文件的所有者使用。

二、chattr命令使用示例

1、给文件设置版本

  -v参数设置版本信息只在extX(ext4…)文件系统下支持,xfs文件系统设置文件版本时会报错对设备不适当的 ioctl 操作。

[root@s153 ~]# chattr -v 2 -V hi.txt
chattr 1.41.12 (17-May-2010)
hi.txt的标志被设为 -------------e-
Version of hi.txt set as 2
[root@s152 test]# chattr -v 2 -V a.txt
chattr 1.42.9 (28-Dec-2013)
a.txt的标志被设为 ----------------
Version of a.txt set as 2
chattr: 对设备不适当的 ioctl 操作 while setting version on a.txt

2、递归设置目录下文件属性

[root@s152 test]# chattr -R -a -V level1-1/
chattr 1.42.9 (28-Dec-2013)
level1-1/的标志被设为 ----------------
level1-1//level2-1的标志被设为 ----------------
level1-1//level2-2的标志被设为 ----------------
level1-1//level2-2/ccc.txt的标志被设为 ----------------
level1-1//level2-3的标志被设为 ----------------
level1-1//bb.txt的标志被设为 ----------------

3、使用-V参数显示指令执行过程

[root@s152 test]# chattr -R -a -V level1-1
chattr 1.42.9 (28-Dec-2013)
level1-1的标志被设为 ----------------
level1-1/level2-1的标志被设为 ----------------
level1-1/level2-2的标志被设为 ----------------
level1-1/level2-2/ccc.txt的标志被设为 ----------------
level1-1/level2-3的标志被设为 ----------------
level1-1/bb.txt的标志被设为 ----------------

4、增加一个属性

[root@s152 test]# lsattr a.txt
---------------- a.txt
[root@s152 test]# chattr +i a.txt
[root@s152 test]# lsattr a.txt
----i----------- a.txt

5、删除一个属性

[root@s152 test]# chattr -i -V a.txt
chattr 1.42.9 (28-Dec-2013)
a.txt的标志被设为 ----------------
[root@s152 test]# lsattr a.txt
---------------- a.txt

6、指定文件属性

  使用=指定文件的属性,实际上文件支持的各属性之间有部分是冲突的,所以很少用到=参数来指定属性,常用±参数来增加或者减少一个属性。

[root@s152 test]# chattr =iaA -V a.txt
chattr 1.42.9 (28-Dec-2013)
a.txt的标志被设为 ----ia-A--------

三、chattr命令语法及参数说明

1、命令语法

#chattr [参数] 文件或者目录
#chattr ±=[属性] 文件或者目录
#chattr [参数] [属性] 文件或者目录

2、参数说明

参数 参数说明
-R 递归处理,将指令目录下的所有文件及子目录一并处理
-v<版本编号> 设置文件或目录版本,此参数只适用于extx文件系统
-V 显示指令执行过程
-f 抑制大多数错误信息
+<属性> 开启文件或目录的该项属性
-<属性> 关闭文件或目录的该项属性
=<属性> 指定文件或目录的该项属性

3、属性说明

  当前主流Linux内核中实现的ext2、ext3和ext4文件系统不支持“c”、“s”和“u”属性。实际上这些属性中常用只有a和i,追加属性长用于日志文件,保证日志文件不会被删除,只允许追加日志记录;i属性用于锁定重要的配置文件,避免误删除或者修改等。

属性 属性说明
a 该属性只允许在文件末尾添加数据,不允许修改或删除文件的内容。
A 设置该属性时,文件atime时间不再更新。
c 默认将文件或目录进行压缩。
C 设置了“C”属性的文件将不会进行写时复制更新。只有在执行写时复制的文件系统上才支持此标志
d 当进行文件系统备份时,不备份该文件或目录。
D 当修改具有“D”属性集的目录时,更改将同步写入磁盘;这相当于应用于文件子集的“dirsync”装载选项。要求内核版本2.5.19以上
i 禁止对文件或目录进行任何修改操作,包括修改、删除、重命名等。
j 允许文件系统支持日志功能,只在ext3、ext4环境下支持。
s 当文件被删除时,将其内容清零。
S 当修改具有“S”属性集的文件时,更改将同步写入磁盘;这相当于应用于文件子集的“sync”装载选项
t 让文件系统支持尾部合并(tail-merging),只有ext2和ext3支持尾部合并
T 具有“T”属性的目录将被视为目录层次结构的顶部。这是对ext3和ext4使用的块分配器的一个提示。
u 删除具有“u”属性集的文件时,将保存其内容。这允许用户请求取消删除。

四、chattr命令使用实践

1、使用i属性锁定/etc/shadow文件,保证系统用户安全

  使用i属性锁定文件后即使是root用户也无法直接删除、修改、更新,需要先解锁才可以对文件进行操作。编辑被i锁定的文件会提示是只读文件,即使使用wr!也无法完成保存,对文件的任何更新、修改操作都必须再解锁后执行。我们在完成操作系统用户等配置之后,可以锁定/etc/shadow文件,用于保障系统账户安全。
在这里插入图片描述

[root@s152 test]# chattr +a a.txt
[root@s152 test]# rm -rf a.txt
rm: 无法删除"a.txt": 不允许的操作
[root@s152 test]# echo “This is add message test” >> a.txt
-bash: a.txt: 权限不够
[root@s152 test]# vim a.txt

2、使用a属性锁定/var/log/messages,防止日志文件被篡改

  使用a属性控制/var/log/messages文件只能追加,不允许删除、覆盖等操作,可以保证系统日志的的安全。
在这里插入图片描述

[root@s152 test]# chattr +a /var/log/messages
[root@s152 test]# lsattr /var/log/messages
-----a---------- /var/log/messages

猜你喜欢

转载自blog.csdn.net/carefree2005/article/details/132298420