有时,我不直截了当地认为“SHIFT+DELETE”我的数据。 更糟糕的是,我什至在删除数据之前都不备份数据。 如果你和我一样,这对你来说是个好消息。 我知道一个有用的命令行实用程序叫做 “闲聊” 用于防止文件和文件夹在 Linux 中被意外删除或修改。
Chattr,简称 通道天使 属性ibute,对 Linux 系统中的文件或文件夹应用/删除某些属性。 所以没有人可以意外或有意删除或修改文件和文件夹, 即使是 root 用户. 听起来很有用,不是吗? 确实!
下载 – 免费电子书:“基本 Linux 工具包”
使用 Chattr 在 Linux 中防止文件和文件夹被意外删除或修改
默认情况下,Chattr 预装在许多 Linux 操作系统中。 所以让我们不要为安装而烦恼。
chattr 命令的默认语法是:
chattr [operator] [switch] [filename]
chattr 有以下运算符:
- 运营商 ‘
+
‘ 使选定的属性添加到文件的现有属性中。 - 运营商 ‘
-
‘ 导致它们被删除。 - 运营商 ‘
=
‘ 使它们成为文件具有的唯一属性。
Chattr 具有不同的属性,即 – aAcCdDeijsStTu. 每个字母都将特定属性应用于文件,如下所示。
- 一种 – 仅附加,
- 一种 – 没有时间更新,
- C – 压缩,
- C – 写时没有副本,
- d – 没有转储,
- D – 同步目录更新,
- e – 范围格式,
- 一世 – 不可变的,
- j – 数据日志,
- 磷 – 项目层次结构,
- s – 安全删除,
- 小号 – 同步更新,
- 吨 – 没有尾部合并,
- 吨 – 目录层次结构的顶部,
- 你 – 不可删除。
在本教程中,我们将讨论两个属性的用法,即 一种, 一世 用于防止删除文件和文件夹。
防止文件在 Linux 中被意外删除
让我创建一个名为 file.txt
在我当前的目录中。
$ touch file.txt
或者,
$ > file.txt
现在,我要申请 “i
“ 使文件不可变的属性。 这意味着 – 即使您是文件所有者和 root 用户,您也无法删除、修改文件。
$ sudo chattr +i file.txt
您可以使用命令检查文件属性:
$ lsattr file.txt
样本输出:
----i---------e---- file.txt
现在,尝试以普通用户或使用 sudo 特权。
$ rm file.txt
样本输出:
rm: cannot remove 'file.txt': Operation not permitted
让我试试 sudo 命令:
$ sudo rm file.txt
样本输出:
rm: cannot remove 'file.txt': Operation not permitted
让我们尝试在文本文件中附加一些内容。
$ echo 'Hello World!' >> file.txt
样本输出:
bash: file.txt: Operation not permitted
即使您尝试在 GUI 模式下从文件管理器中删除该文件,也无法将其删除。

正如您在上述输出中所注意到的,即使是 root 用户,我们也无法删除或修改该文件。
要撤销属性,只需使用 “-i
“ 如下图切换。
$ sudo chattr -i file.txt
现在,不可变属性已被删除。 您现在可以根据需要修改或删除文件。
$ echo 'Hello World!' >> file.txt
$ cat file.txt Hello World!
$ rm file.txt

同样,您可以限制目录被意外删除或修改,如下一节所述。
防止Linux中的文件夹被意外删除和修改
创建一个名为 dir1
和一个名为 file.txt
在这个目录里面。
$ mkdir dir1 && touch dir1/file.txt
现在,使用命令使这个目录及其内容(file.txt)不可变:
$ sudo chattr -R +i dir1
在哪里,
-R
– 将使 dir1 及其内容递归地不可变。+i
– 使目录不可变。
现在,尝试以普通用户或使用删除目录 sudo 用户。
$ rm -fr dir1
$ sudo rm -fr dir1
您将获得以下输出:
rm: cannot remove 'dir1/file.txt': Operation not permitted
尝试使用“在文件中附加一些内容echo
” 命令。你做到了吗?当然,你做不到!

要撤消属性,请运行:
$ sudo chattr -R -i dir1
现在,您可以照常删除或修改该目录的内容。
防止文件和文件夹被意外删除,但允许在 Linux 中进行追加操作
我们现在知道如何防止文件和文件夹被意外删除和修改。 接下来,我们将防止文件和文件夹被删除,但只允许文件以附加模式写入。 这意味着您不能编辑、修改文件中的现有数据、重命名文件和删除文件。 您只能以追加模式打开文件进行写入。
要将附加模式归因于文件/目录,我们执行以下操作:
对于文件:
$ sudo chattr +a file.txt
对于目录:
$ sudo chattr -R +a dir1
具有“a”属性集的文件/文件夹只能以附加模式打开以进行写入。
将一些内容添加到文件中以检查它是否有效。
$ echo 'Hello World!' >> file.txt
$ echo 'Hello World!' >> dir1/file.txt
使用 cat 命令检查文件内容:
$ cat file.txt
$ cat dir1/file.txt
样本输出:
Hello World!

如您所见,我们可以附加内容。 这意味着我们可以修改文件和文件夹。
让我们现在尝试删除文件或文件夹。
$ rm file.txt
输出:
rm: cannot remove 'file.txt': Operation not permitted
让我们尝试删除文件夹:
$ rm -fr dir1/
或尝试 sudo:
$ sudo rm -fr dir1/
样本输出:
rm: cannot remove 'dir1/file.txt': Operation not permitted

要删除属性,请运行以下命令:
对于文件:
$ sudo chattr -R -a file.txt
对于目录:
$ sudo chattr -R -a dir1/
现在,您可以照常删除或修改文件和文件夹。
有关更多详细信息,请参阅手册页。
$ man chattr
总结
数据备份和保护是 Linux 系统管理员的主要工作之一。 市场上有许多免费和商业数据保护软件。 幸运的是,我们有这个内置工具,可以帮助我们保护数据不被意外删除或修改。 Chattr 可用作保护 Linux 系统中重要系统文件和数据的附加工具。
建议阅读:
- 在 Linux 中保护文件免遭意外删除的简单方法
- 如何在 Linux 中避免意外关机或重启