防止文件和文件夹在 Linux 中被意外删除或修改

有时,我不直截了当地认为“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
在 Linux 中使用 chattr 命令使文件不可变

现在,尝试以普通用户或使用 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
使用 Chattr 在 Linux 中防止文件被意外删除

即使您尝试在 GUI 模式下从文件管理器中删除该文件,也无法将其删除。

防止在 Linux 中删除文件防止在 Linux 中删除文件

正如您在上述输出中所注意到的,即使是 root 用户,我们也无法删除或修改该文件。

要撤销属性,只需使用 -i 如下图切换。

$ sudo chattr -i file.txt

现在,不可变属性已被删除。 您现在可以根据需要修改或删除文件。

$ echo 'Hello World!' >> file.txt
$ cat file.txt
Hello World!
$ rm file.txt
使用 chattr 删除不可变的文件属性使用 chattr 删除不可变的文件属性

同样,您可以限制目录被意外删除或修改,如下一节所述。

防止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” 命令。你做到了吗?当然,你做不到!

防止Linux中的文件夹被意外删除和修改防止Linux中的文件夹被意外删除和修改

要撤消属性,请运行:

$ 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!
允许在 Linux 中使用 chattr 命令进行追加操作允许在 Linux 中使用 chattr 命令进行追加操作

如您所见,我们可以附加内容。 这意味着我们可以修改文件和文件夹。

让我们现在尝试删除文件或文件夹。

$ 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
防止文件和文件夹被意外删除,但允许在 Linux 中进行追加操作防止文件和文件夹被意外删除,但允许在 Linux 中进行追加操作

要删除属性,请运行以下命令:

对于文件:

$ sudo chattr -R -a file.txt

对于目录:

$ sudo chattr -R -a dir1/

现在,您可以照常删除或修改文件和文件夹。

有关更多详细信息,请参阅手册页。

$ man chattr

总结

数据备份和保护是 Linux 系统管理员的主要工作之一。 市场上有许多免费和商业数据保护软件。 幸运的是,我们有这个内置工具,可以帮助我们保护数据不被意外删除或修改。 Chattr 可用作保护 Linux 系统中重要系统文件和数据的附加工具。

建议阅读:

  • 在 Linux 中保护文件免遭意外删除的简单方法
  • 如何在 Linux 中避免意外关机或重启