Linux中用Chattr命令设置文件限制属性(防修改删除等)【详解】
作者:admin 时间:2026-3-26 9:22:14 浏览:chattr是一个UNIX命令行程序,在大多数Linux发行版中都预先提供了它。此命令的作用是允许管理员用户设置对文件施加限制的文件属性。
不同的角色有几个文件属性,例如“+i”属性,它可以防止文件被重命名、删除或修改,“+a”属性,它只允许附加新内容,以及本教程后面将讨论的其他一些属性。
使用此命令的好处是限制适用于普通用户和root用户,使其成为保护重要和敏感文件免受意外或追溯更改的良好选择。
在本教程中,我将向你解释如何在实际场景中使用chattr命令及其各种选项、操作符和文件属性。

chattr命令语法
chattr命令有三个参数:第一个是选项,第二个是文件属性,第三个是要应用所选文件属性的文件路径。
$ chattr [option] [attribute*] [path/to/file*]
在指定文件属性时,主要使用“+”和“-”操作符:“+”操作符将选定的属性限制添加到文件中,而“-”操作符将其删除。此外,你还可以使用“=”操作符删除所有现有的属性,并用选定的属性替换它们。
chattr的可用选项是“-R”选项,用于递归地将指定属性应用于所选目录中的每个文件,“-V”选项用于显示更改的文件,“-f”选项用于隐藏常见错误。
现在,让我们了解更多关于一些重要的文件属性,你将主要使用这些属性来使用chattr命令设置限制。
chattr命令的文件属性列表
以下是常用的chattr属性及其用途的列表。
- a:仅允许在施加写入、重命名和删除限制的情况下追加新内容。
- A:访问时间(或 atime)记录被冻结。
- c:在支持的文件系统上启用文件的透明压缩。
- S:对文件的更改同步更新,这将确保关键数据的完整性。
- i:启用不可变模式,允许查看文件内容,但禁止写入,重命名,删除或追加操作。
- j:它将确保更改首先应用于ext3日志,然后才应用于文件本身。
- t:禁用尾部合并。
- d:它将拒绝所选文件的转储过程,这通常用于创建备份。
- u:当文件被意外删除时,会生成文件的副本,稍后可以恢复。
- e:这是应用于所有文件的默认属性,指示文件系统使用区段来映射文件在磁盘上的位置。
上面的列表包含完整列表中的一些属性。要查看整个列表,你可以使用“man chattr”命令。现在让我们来看看这个属性在使用中的一些实际例子。
对文件应用写入、重命名和删除限制
“+i”属性使文件不可变,防止任何修改,即使是root。
$ sudo chattr +i myfile.txt
输出:

尽管存在写入、重命名和删除限制,仍可以查看文件的内容。
删除对文件的写入、重命名和删除限制
要删除在前面的方法中对文件设置的限制,可以使用“-i”属性。
$ sudo chattr -i myfile.txt
输出:

请注意,这只会删除对“+i”属性的限制。如果用户同时指定不同的属性或多个属性,它们仍然存在。
应用 Append-Only(仅追加)权限
“+a”属性与“+i”属性非常相似,可以防止写入、重命名和删除操作,但允许向文件追加新内容。你可以将此属性应用于日志文件以防止追溯更改。
$ sudo chattr +a myfile.txt
输出:

要将文件恢复到其原始状态,请使用"-a"属性删除 Append-Only(仅追加)的限制。
检查选定文件的应用属性
要跟踪现有属性或验证是否设置了应用的属性,可以使用“lsattr”命令,该命令列出指定给选定文件的所有属性。
$ lsattr myfile.txt
输出:

上面的输出表明文件有两个属性:“i",这意味着文件是不可变的,“e",这是应用于所有文件的默认属性。
用新属性替换现有属性
当一个文件应用了多个属性,但你希望将所有属性替换为选定的属性时,你可以为此任务使用“=”运算符指定属性。
$ sudo chattr =u myfile.txt
输出:

将属性应用于选定目录中的所有文件
要将选定的属性应用于目标目录中的所有文件,请使用“-RV”选项对所有文件进行递归更改,然后列出受影响的文件。
$ sudo chattr -RV +u mydir/
输出:

总结
在本文中,介绍了如何将chattr命令与各种运算符和属性以及可用选项一起使用。使用此命令的好处是限制适用于普通用户和root用户,使其成为保护重要和敏感文件免受意外或追溯更改的良好选择。



