fla*_*awr 3 filesystem permissions command-line rm
我有一些文件夹~/foo,我想防止意外删除,也就是我想保护它不被删除rm -r ~/foo或rmdir ~/foo。
我意识到您可以使用chmod a-w ~/fooor来做到这一点,chattr -i ~/foo但这有一个缺点,即您无法更改该文件夹中的任何内容。但是,我仍然希望能够在 ~/foo.
有没有可能这样做?
在文件夹内创建一个隐藏文件并.foo以“root”身份执行(例如):
touch ~/foo/.foo
chattr +i ~/foo/.foo
Run Code Online (Sandbox Code Playgroud)
您现在可以删除除此.foo目录之外的所有文件,并且该目录不能被其他用户删除。你仍然可以移动目录,你可以用粘性位停止它......
sudo chmod +t ~/foo
Run Code Online (Sandbox Code Playgroud)
这应该涵盖您的问题。但我同意:备份总是更好的选择。一个更困难的选择:~/foo在用户无法访问的目录中放置一个目录观察器并为每个触及的文件创建一个带时间戳的备份,然后在用户无法访问的目录中进行更改将是一种更安全的方法。
我建议将以下“安全网”添加到您的 .bashrc(或另一个 shell 的配置文件)中,以防止出现最明显的错误。
在删除 3 个或更多文件或递归删除任何目录之前要求确认。还可以防止/递归删除:(该-I参数比-i每个文件上的 which 提示的侵入性小,但仍然可以通过单个确认提示防止大多数错误)
alias rm='rm -I --preserve-root'
Run Code Online (Sandbox Code Playgroud)
防止/递归更改权限和所有权:(不是您的问题,但仍然是一个不错的安全功能)
alias chmod='chmod --preserve-root'
alias chown='chown --preserve-root'
alias chgrp='chgrp --preserve-root'
Run Code Online (Sandbox Code Playgroud)