在 Linux 中使用 chattr 命令

chattr(字符属性)命令允许您设置某些属性,通过这些属性您可以通过意外修改或删除来保护文件,即使您是 root!

是的,它可以帮助您避免遇到“哦!不”的时刻。

因此,在本指南中,我将分享一些有关如何在 Linux 上使用 chattr 命令的实际示例。

Linux 中的 chattr 命令

要使用 chattr 命令,您只需遵循简单的命令语法:

chattr [operator] [flags] [filename]

基本上,您在 [operator][flags] 通过它您可以调整 chattr 命令的行为。

因此,让我们看看您在每个开始时获得的不同选项。

操作员:

在 chatter 命令中,您将获得以下运算符:

操作员描述
+向文件添加属性。
从文件中删除一个属性。
=会将选定的属性保留为文件具有的唯一属性。

标志:

以下是可用于调整 chattr 命令行为的标志:

旗帜描述
A使用时,访问时间保持不变。
A启用仅附加模式,您只能通过附加附加数据来修改文件,但不能覆盖文件内容。
小号使用时,将同步对磁盘进行更改。
当您无法对文件进行任何更改时激活不可变模式,除非您具有超级用户权限。
j使用时,首先对 ext3 文件日志进行更改,然后再对文件本身进行更改。
它禁用尾部合并。
d使用时,它使转储实用程序忽略指定的文件。
当一个带有u属性的文件被删除时,会生成一个副本文件,可以用来恢复被无意中删除的数据。
电子盘区格式属性表示文件系统正在使用盘区来映射磁盘的文件位置。 此属性无法更改。

现在,让我们看看 chattr 命令的一些实际例子.

使用 chattr 命令为文件添加只读限制

要设置只读限制,您所要做的就是使用 i 标志和文件变得不可变,不能删除(即使是根!)。

为了 example,我将使用一个名为 File.txt 它具有以下 r/w/x 权限:

现在,让我们执行 chattr 命令 i 带有附加标志 + 操作员:

sudo chattr +i File.txt

执行此操作后,您可以使用 lsattr 命令验证属性是否按预期设置:

lsattr File.txt

正如您在上面的屏幕截图中所看到的, i 属性已设置。 属性 e 始终设置(如前面的表中所述)。

现在,如果您尝试删除该文件(即使是作为根目录),它也不允许您这样做:

使用 chattr 设置 i 属性,即使是 root 也无法删除文件

那很好。 但是如果你真的想删除文件怎么办? 那么,为此,您将不得不取消设置该属性。 让我告诉你怎么做。

使用 chattr 命令取消设置属性

要取消设置该属性,您必须按以下方式执行 chattr 命令:

chattr -[attribute] Filename

在这里,您必须附加要取消设置的属性 - 操作员。

为了 example,早些时候,我用 i 属性使其成为只读的,所以如果我必须取消设置该属性,我将使用以下内容:

chattr -i File.txt

完成后,我可以轻松删除文件:

设置仅追加限制

因此,如果您希望允许所有人仅通过附加数据来修改文件并限制他们更改现有数据,那么您可以这样做。

要设置仅追加限制,您必须使用 a 标志与 + 操作员:

sudo chattr +a File.txt

一旦你这样做,你将无法覆盖文件的现有数据(File.txt) 就我而言。

为了 example,在这里,我使用了没有任何附加标志的回显字符串,这意味着它应该用新字符串覆盖现有数据:

使用 chattr 命令设置仅追加限制

为目录设置属性

您可以使用一个附加标志将任何属性设置为目录 -R.

在这里, -R 标志将被递归应用,以便目录中的每个内容都可以从单个命令执行中生效:

sudo chattr -R [attribute] Directory

为了 example,在这里,我设置了 i 归因于 Test 目录:

sudo chattr -R +i Test/

现在,如果我尝试删除该目录,它会抛出一个错误:

无法在 Linux 中删除目录

和往常一样,您可以取消设置我在指南前面提到的属性。

掌握文件权限

我假设如果您的工作流程需要使用 chattr 命令,您必须处理各种用户。

要管理用户,没有比使用 chage 命令更好的方法了,您可以通过该命令修改用户帐户过期本身:

我希望您会发现本指南对您有所帮助。

如果您有任何疑问或建议,请在评论中告诉我。