
你是否曾不小心删除了一个重要的配置文件或覆盖了你需要的更改?Linux 提供了一个强大但鲜为人知的功能,可以帮助避免这些情况的发生:文件不可更改性。
文件不可更改意味着它不能被修改、删除、重命名或链接–即使是拥有 root 权限的用户。这为关键系统文件或重要数据提供了额外的保护。
在本教学指南中,我们将介绍如何在 Linux 中使用 chattr 命令使文件属性不可更改,尝试修改受保护文件时会发生什么,以及如何在需要时移除这种保护。
我们将使用 chattr(更改属性)命令来使文件不可更改。普通的文件权限只根据用户权限来限制访问,而文件属性则不同,它可以阻止特定操作,不管是谁在尝试。
要使文件不可更改,可以使用带有 +i 标志的 chattr 命令:
sudo chattr +i filename.txt
你需要 root 权限(使用 sudo )才能更改文件属性,尤其是系统文件。如果你不熟悉 sudo,请查看我们的指南,了解。
一旦文件被标记为不可变,一些操作就会出现“操作不允许”的错误:
让我们举例说明修改不可变文件时会发生什么:
$ sudo chattr +i important.conf $ rm important.conf rm: cannot remove 'important.conf': Operation not permitted $ mv important.conf renamed.conf mv: cannot move 'important.conf' to 'renamed.conf': Operation not permitted $ echo "new content" > important.conf bash: important.conf: Operation not permitted
请注意,即使文件权限正确,这些操作也会失败。这就是不可变属性的威力–它可以覆盖正常的权限检查。
请记住,当文件不可变时,即使是根用户也不能修改它,直到不可变属性被移除。
在尝试修改文件之前,你可能想检查一下文件是否设置了不可变属性。你可以使用lsattr(属性列表)命令:
$ lsattr filename.txt ----i--------e---- filename.txt
i 标志的存在表明文件是不可变的。
在以下情况下应移除不可更改性
好的做法是先移除不可更改性,然后进行修改,完成后再将文件重新设置为不可更改。
当你需要更新或管理不可变文件时,首先需要移除不可变属性。这需要再次使用 chattr 命令,但要使用 -i 标志:
sudo chattr -i filename.txt
删除不可变属性后,就可以执行所有正常的文件操作了:
$ sudo chattr -i important.conf $ echo "Updated content" > important.conf # Now works $ mv important.conf renamed.conf # Now works $ rm renamed.conf # Now works
让文件不可变不仅仅是一个很酷的技巧,对于系统管理员和有安全意识的用户来说,它还有一些实际应用:
/etc/passwd、/etc/shadow 和 /etc/hosts 等系统配置文件包含重要信息。让它们不可更改,可以防止意外或恶意更改,以免危及系统。
sudo chattr +i /etc/passwd /etc/shadow /etc/hosts
切记在需要合法更新时暂时删除不变性,之后再重新应用。
我们都有过不小心删除重要文件的经历。对于你很少更改但一直需要的文件,不可更改性可以让你高枕无忧:
sudo chattr +i ~/Documents/important_records.pdf
有些恶意软件试图修改系统文件或配置文件。通过使关键系统文件不可更改,可以防止恶意软件成功入侵系统,即使它以某种方式获得了更高的权限。
在稳定性至关重要的生产环境中,可以使部署配置不可变,以防止意外更改导致中断:
sudo chattr +i /etc/nginx/nginx.conf sudo chattr +i /etc/apache2/apache2.conf
使引导文件不可变有助于防止引导扇区恶意软件,并确保系统启动可靠:
sudo chattr +i /boot/grub/grub.cfg
对于创建后永远不能更改的日志或记录(出于合规或安全原因),可以创建文件、添加内容,然后使其不可变:
echo "Initial log entry: $(date)" > audit_log.txt sudo chattr +i audit_log.txt
请记住,不变性不能取代备份!虽然它可以防止修改或删除,但无法防止硬件故障或其他可能损坏存储的问题。
带有不可变标志的 chattr 命令为保护 Linux 系统中的重要文件提供了一种简单而强大的 *** 。只需使用两个命令 chattr +i (使文件不可变)和 chattr -i(删除不可变),你就能为最重要的文件添加额外的保护层。
这项功能的特别之处在于
虽然不能取代良好的备份实践或适当的系统管理,但文件不变性是 Linux 安全工具包中的一个重要工具。它创建了一个简单的“锁”,需要特意操作才能移除,可以防止许多常见的文件灾难。
除了不变性,chattr 命令还提供了其他一些有用的属性:
a(仅限附加):打开文件只能用于添加数据,不能编辑现有内容s(安全删除):删除文件时,数据块清零并写入磁盘A(无时间更新):访问文件时,文件的访问时间记录不会被修改c(压缩):文件在磁盘上自动压缩,读取时自动解压缩下一次,当你有一个重要的配置文件需要保护,或者只是想确保你不会不小心删除你的纳税记录时,请记住 chattr +i 的简单功能。它可能会拯救你的一天!
不久前,PHP 8.0大张旗鼓地发布了。它带来了许多新特性、性能增强和变化——其中最令人兴奋的是新的JIT编译器。 技术世界总是在向前发展,PHP也是如此。 ,包含了几个令人兴奋的特性。它定于今年晚些时候于2021年11月25日发布。 在本文中,我们将详细介绍PHP 8.1将带来哪些新的东...
Linux面板环境安装,主要支持LNMP和LAMP、Tomcat、node.js。不过对于大部分站长来说,主要是LNMP和LAMP两个环境的安装。 LNMP和LAMP两个环境的最大区别是,前者采用Nginx作为Web服务器,后者则采用Apache作为Web服务器。(选择哪个作为您的Web服务器,可...
宝塔面板另外一个特质是,你无需通过Linux命令行来查看服务器各项指标状况,即可以阿里云服务器类似的可视化图表,查看资源使用、负载、CPU占用及内容使用百分比等指标。 默认监控是关闭,有需要的,可以开启,监控数据默认保存30天,可以自行修改,默认监控数据保存在日志,可手动清理该日志。 监控管理,...
宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...
经过几个小时的努力工作后,您是否感到眼睛疲劳或难以阅读代码?许多程序员在开始头疼之前从没想过要切换字体。 如果您经常发现在尝试扫描一千行代码时眼睛模糊不清,或者在停止编码数小时后头疼,那么可能是时候尝试一种新字体了。即使您没有遇到这些症状,设计良好的字体通常也比默认系统字体具有更好的可读性。...
Node.js和PHP是Web开发工作中常用的两种基本Web技术。两者都为服务器端开发做出了贡献,Node.js甚至同时服务于客户端和服务器端开发。 PHP已经为开发人员服务了近3年,现在它为78%的网络提供支持。相比之下,Node.js相对较新,但扩展速度非常快,由于其全栈开发能力而成为流行...