root用户是至高无上的用户,root几乎可以进行任何危险的系统操作,包括删除文件。如果不想文件被删除怎么办?使用chattr 能给文件加强制锁定的属性,即使是root用户也rm 删除不了,文件在文件系统层被锁定了。
chattr只支持Linux 的文件系统,如ext3、ext4、btrfs、xfs等之类,不支持NTFS、FAT32
chattr 的文件锁定功能大多数用在防止文件被误删除,这种锁定是可以解除的,不能完全保证文件不能被删除。
使用方法:
必须使用root权限执行
sudo chattr +i 文件路径 (i是禁止写入,禁止删除,+为添加属性,取消是-
sudo chattr -R +i 文件夹路径 (-R 参数是递归操作的意思,适用于文件夹内所有的文件
chattr属性共有以下8种模式:
A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:当dump程序执行时,该文件或目录不会被dump备份。
D:检查压缩文件中的错误。
i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
t:文件系统支持尾部合并(tail-merging)。
X:可以直接访问压缩文件的内容。
这些模式有很多用途:
A属性 添加到系统所有文件里有利于提高磁盘性能,每次访问文件不必每次修改文件最后访问时间。mount 加noatime 参数同样能实现这个功能。
S属性 文件实时同步功能,如果文件修改了会立即同步到磁盘上,适用于编辑文档的word文件,以免断电导致正在编辑的文件内容丢失。
a属性 只能增加文件,不能删除原有文件内容,防止篡改,适用于日志文件
c属性 实现文件系统级的文件压缩
i属性 不能修改文件,包括不能删除
s属性 文件删除了就是真正删除,恢复不了,适用于保密的文件
相对与chattr ,lsattr是用来查看文件attr属性的
参考资料