如何借助chattr命令让重要文件免遭删除

市面上有许许多多的工具和方法,可以保护你的文件和文件夹,以免被不小心删除。chattr命令就是其中之一。这个命令行实用工具可以更改ext2/ext3/ext4文件系统上的文件属性。它可以防止你的重要文件被不小心删除。即便你对文件拥有全面的权限,但如果这些文件由chattr加以保护,你还是无法删除它们。

[[84044]]

语法

# chattr [运算符] [参数选项符] [文件名]

运算符

+ 将所选择的属性添加到文件的现有属性中;
- 删除所选择的属性;
= 让所选择的属性成为文件拥有的唯一属性。

参数选项符

R--递归更改文件夹及其内容的属性。
a--拥有"a"属性的文件只能在追加模式下打开,以便进行写操作。
只有超级用户或拥有CAP_LINUX_IMMUTABLE功能的进程才能设置或清除这个属性。
i--拥有"i"属性的文件无法被修改:该文件无法被删除或更名,无法为该文件创建链接,
也无法将数据写入到该文件。只有超级用户或拥有CAP_LINUX_IMMUTABLE功能的进程才
能设置或清除这个属性。

参数选项符”a”和”i”之间的区别在于,拥有”a”属性的文件可以追加内容,而拥有”i”属性的文件无法追加内容。你可以使用lsattr命令,查看文件的属性。#p#

用法

我们不妨在/home/sk目录下创建名为unixmen1和unixmen2的样本文件:

sk@sk:~$ touch unixmen1 unixmen2

示例1:带”i”参数选项符的chattr

sk@sk:~$ sudo chattr +i unixmen1

查看文件unixmen1的属性:

sk@sk:~$ sudo lsattr unixmen1
----i--------e-- unixmen1

好了,现在已为unixmen1文件设置了属性。接下来凭借根用户权限,试图删除该文件。

sk@sk:~$ sudo rm -f unixmen1
rm: cannot remove 'unixmen1': Operation not permitted

你看到,就算你拥有根用户权限,也无法删除该文件。

试着将一些内容追加到unixmen1文件:

sk@sk:~$ cat >> unixmen1
bash: unixmen1: Permission denied
sk@sk:~$ sudo cat >> unixmen1
bash: unixmen1: Permission denied

当文件由chattr保护时,无论你是超级用户,还是普通用户,都无法追加任何内容。

删除文件属性:

sk@sk:~$ sudo chattr -i unixmen1

现在将一些内容添加到unixmen1文件:

sk@sk:~$ cat >> unixmen1
Welcome to Unixmen Network

按CTRL+D组合键,保存并退出该文件。

现在,你可以没有任何限制地追加内容了。使用下面这个命令,显示该文件的内容:

sk@sk:~$ cat unixmen1
Welcome to Unixmen Network

另外,现在你还可以删除该文件。无论你是超级用户还是普通用户,那都没有关系:

sk@sk:~$ rm -f unixmen1

或者:

sk@sk:~$ rm unixmen1

请注意:我在上面一个示例中没有使用sudo。#p#

示例2:带”a”参数选项符的chattr

正如我在前面提到的那样,参数选项符”a”和”i”之间的区别主要在于,你可以为带”a”参数选项符的文件追加内容,却无法为用”i”参数选项符创建的文件追加任何内容:

sk@sk:~$ sudo chattr +a unixmen2

将一些内容追加到unixmen2文件:

sk@sk:~$ cat >> unixmen2
Hello welcome to unixmen network

按CTRL+D组合键,保存并退出该文件。现在你可以追加内容了,但无法删除该文件:

sk@sk:~$ rm -f unixmen2
rm: cannot remove 'unixmen2': Operation not permitted
sk@sk:~$ sudo rm -f unixmen2
rm: cannot remove 'unixmen2': Operation not permitted

使用下面这个命令,清除属性:

sk@sk:~$ sudo chattr -a unixmen2

现在,试着删除该文件:

sk@sk:~$ rm unixmen2

文件将不受任何限制地被删除。#p#

示例3:带”R”参数选项符的chattr

假设我有一个名为unixmen的目录。该文件夹里面含有名为file1、file2和file3的几个文件:

sk@sk:~$ mkdir unixmen
sk@sk:~$ cd unixmen/
sk@sk:~/unixmen$ touch file1 file2 file3
sk@sk:~/unixmen$ cd ..
sk@sk:~$ ls unixmen/
file1  file2  file3

带”i”参数选项符,为unixmen文件夹及其内容设置属性:

sk@sk:~$ sudo chattr -R +i unixmen/

这里,”R”参数选项符用来递归更改目录unixmen及其内容的属性。

试着删除文件夹unixmen或者其内容:

sk@sk:~$ rm -fr unixmen/
rm: cannot remove 'unixmen/file1': Permission denied
rm: cannot remove 'unixmen/file2': Permission denied
rm: cannot remove 'unixmen/file3': Permission denied
sk@sk:~$ sudo rm -fr unixmen/
rm: cannot remove 'unixmen/file1': Permission denied
rm: cannot remove 'unixmen/file2': Permission denied
rm: cannot remove 'unixmen/file3': Permission denied

你看到,无论你是根用户还是普通用户,都无法删除文件夹或其内容。如果你使用”i”参数选项符,也无法将任何内容追加到unixmen文件夹里面的文件:

sk@sk:~$ cat >> unixmen/file1
bash: unixmen/file1: Permission denied

想删除unixmen文件夹及其内容的属性,只要执行下面这个命令:

sk@sk:~$ sudo chattr -R -i unixmen/

现在你可以更改、删除或修改该文件夹及其内容了。

正如我们在示例2中看到的那样,只有当你用”a”参数选项符设置了文件夹属性后,才能将内容追加到文件:

sk@sk:~$ sudo chattr -R +a unixmen/

将内容追加到文件:

sk@sk:~$ cat >> unixmen/file1
Hello Welcome

按CTRL+D组合键,保存并退出该文件。

显示file1的内容:

sk@sk:~$ cat unixmen/file1
Hello Welcome

不过,你无法删除文件夹或文件:

sk@sk:~$ rm -fr unixmen/
rm: cannot remove 'unixmen/file1': Operation not permitted
rm: cannot remove 'unixmen/file2': Operation not permitted
rm: cannot remove 'unixmen/file3': Operation not permitted
sk@sk:~$ sudo rm -fr unixmen/
rm: cannot remove 'unixmen/file1': Operation not permitted
rm: cannot remove 'unixmen/file2': Operation not permitted
rm: cannot remove 'unixmen/file3': Operation not permitted

#p#

示例4:防止用户更改密码

该示例还将帮助你防止用户更改密码。众所周知,/etc/shadow文件为用户帐户存储着采用加密格式的实际密码,同时存储着与用户密码有关的额外属性。它存储着安全用户帐户信息。所以,我们不妨对该文件进行写保护,以防密码被人更改:

sk@sk:~$ sudo chattr +i /etc/shadow

现在,更改当前用户密码(比如sk):

sk@sk:~$ sudo passwd sk
Enter new UNIX password:
Retype new UNIX password:
passwd: Authentication token manipulation error
passwd: password unchanged

现在退出系统,以用户”sk”的身份再次登录。不过,你无法用新密码登录进去,仍需要用原来那个密码才能登录。

使用下面这个命令,查看/etc/shadow文件的属性:

sk@sk:~$ sudo lsattr /etc/shadow
----i--------e-- /etc/shadow

想恢复原有属性,只要键入下面这个命令:

sk@sk:~$ sudo chattr -i /etc/shadow

我希望,你会喜欢上这个命令,并使用该命令保护文件,防止被不小心删除。想了解关于chattr命令的更多信息,请参阅参考手册页。

 

sk@sk:~$ man chattr

 

 

原文地址: http://www.unixmen.com/secure-and-prevent-files-from-accidental-deletion-with-chattr/

 

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/137558.html<

(0)
管理的头像管理
上一篇2025-03-02 14:51
下一篇 2025-03-02 14:53

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注