![保护可写目录中的文件免受 rm -rf 的影响](https://linux22.com/image/85474/%E4%BF%9D%E6%8A%A4%E5%8F%AF%E5%86%99%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%85%8D%E5%8F%97%20rm%20-rf%20%E7%9A%84%E5%BD%B1%E5%93%8D.png)
假设有一个~/docs
具有所有者boo
、组boo
和权限的目录rwxr-x---
。假设有一些重要的文件,apple.txt
并且用户想要保护自己免受攻击(例如意外删除),但不能选择更改文件的权限或移动文件。有哪些可能的解决方案?orange.txt
docs
boo
rm -rf /home/boo/*
docs
r-xr-x---
普通用户做不到chattr +i apple.txt orange.txt
(而且这仅适用于 Linux)。
因此,我能想到的唯一选择是首先将文件chmod 550 apple.txt orange.txt
硬链接ln ~/docs/apple.txt ~/docs/orange.txt ~/locked/
到目录~/locked/
和chmod 550 /home/boo/locked/
.这是正确的吗?或者有更简单的方法吗?
答案1
您排除了防止删除的正常方法,因此这需要一种解决方法,其中删除是可能的,但不是灾难性的。
如果apple.txt
和orange.txt
是符号链接,那么该目录中的杂散rm -rf
只会删除符号链接,而不是实际数据,因此可以重新创建符号链接。
如果由于某种原因文件不能是符号链接,那么更好的选择是使用保险丝执行以下操作的文件系统联合安装例如函数或者UnionFS熔断器。将重要文件放在主分支以外的分支中,这样删除它们只会隐藏它们,而不会从底层存储中删除它们。
当然,确保文件不丢失的最可靠方法是备份它们。如果您保留文件的历史记录而不仅仅是最新版本,这也可以防止意外覆盖(例如,>apple.txt
而不是<apple.txt
)。版本控制(在备份的存储库中!)是保留旧版本历史的理想方式。