![使用“rm”保护文件夹免遭意外删除](https://linux22.com/image/1181846/%E4%BD%BF%E7%94%A8%E2%80%9Crm%E2%80%9D%E4%BF%9D%E6%8A%A4%E6%96%87%E4%BB%B6%E5%A4%B9%E5%85%8D%E9%81%AD%E6%84%8F%E5%A4%96%E5%88%A0%E9%99%A4.png)
我有一些文件夹~/foo
想保护它以免被意外删除,也就是说我想用rm -r ~/foo
或保护它以免被删除rmdir ~/foo
。
我意识到你可以使用chmod a-w ~/foo
或来做到这一点chattr -i ~/foo
,但这样做的缺点是你无法更改该文件夹内的任何内容。不过,我仍然希望能够创建/移动/删除文件和文件夹里面 ~/foo
。
有可能这样做吗?
答案1
在文件夹内创建一个隐藏文件并.foo
以“root”身份执行(例如):
touch ~/foo/.foo
chattr +i ~/foo/.foo
现在,您可以删除.foo
除此目录之外的所有文件,并且其他用户无法删除该目录。不过,您仍然可以移动该目录,并且可以使用粘滞位来阻止此操作...
sudo chmod +t ~/foo
这应该可以解决您的问题。但我同意:备份始终是更好的选择。一个稍微困难一些的选择是:打开目录监视程序~/foo
,并在用户无法访问的目录中为每个被触碰的文件创建带时间戳的备份,并在文件被更改之前将其保存在用户无法访问的目录中,这将是更安全的方法。
答案2
我建议将以下“安全网”添加到您的 .bashrc(或另一个 shell 的配置文件)中,以防止最明显的错误。
在递归删除 3 个或更多文件或任何目录之前请求确认。还可以防止/
递归删除:(该-I
参数比每个文件上的提示更不具侵入性-i
,但仍可通过单个确认提示防止大多数错误)
alias rm='rm -I --preserve-root'
防止以递归方式更改权限和所有权/
:(这不是你的问题,但仍然是一个很好的安全功能)
alias chmod='chmod --preserve-root'
alias chown='chown --preserve-root'
alias chgrp='chgrp --preserve-root'