因为工作需要,要对一些重要数据进行备份,但又怕不小心将这些备份文件删除掉,于是就想办法将这些文件保护起来,经多方查找,发现了Linux有一个chattr命令可以实现这一目的。
chattr命令基本语法:
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
属性有以下参数:
A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:当dump程序执行时,该文件或目录不会被dump备份。
D:检查压缩文件中的错误。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件系统的安全设置有很大帮助。
s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
t:文件系统支持尾部合并(tail-merging)。
X:可以直接访问压缩文件的内容。
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。
命令参考:
sudo chattr -V -R +a /home/bf/
命令效果:将/home/bf/下面的文件设置为只允许建立和修改文件,不允许删除文件,并显示处理过程。 取消命令:
sudo chattr -V -R -a /home/bf
这样就可以保护BF目录下的文件不被删除。其它参数亦可实现相应效果。
查看文件夹的chattr设置情况命令:lsattr

chattr 命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/var目录。