我正在寻找一种方法来阻止意外删除 Linux 中的某些重要文件,但有几个条件。该文件必须保持可写(因此当然仍然可以用垃圾数据替换、截断等),并且用户必须能够在同一目录中创建新文件。
理想的解决方案是让目录中新创建的文件自动获取相同的属性,但我可以通过软件解决这个问题。
解决方案是防止有人运行错误的rm
命令。
答案1
停止偶然删除,这可能就像为“创建别名一样简单R M“对于所有用户(例如将其放入“/etc/profile”中):
$ alias rm="echo 请不要删除任何文件!" $ rm foo 请不要删除任何文件!foo
为了防止用户使用/bin/rm
命令,可以设置ACL该命令,例如仅允许“staff: 组中的用户使用/bin/rm
:
$ sudo chmod 0700 /bin/rm $ sudo setfacl -mg:staff:rx
但这并不能阻止故意删除文件。如果文件需要可写,用户只需“将”文件“置为空”(如果没有通过“聊天室“)——该文件仍会存在,但大小为零。
此外,用户还可以使用/bin/unlink
删除文件(如果 ACL 没有禁止,请参阅上文)或编译他们自己的版本rm
或unlink
完全版本,从而规避了上述所有恶作剧。
要真正防止文件被删除,正确的 Unix 权限或 ACL 才是关键。
答案2
刚刚看到这个已经有 1000 次浏览量,但是我想要的答案却不在这里。
解决方案非常简单,您可以删除目录本身的写权限,dr-xr-x---
在这种情况下保留其权限。
这样可以阻止在目录中创建或删除文件,但您可以完全访问目录中的文件。我们更改了应用程序,使其在需要创建文件时仅授予自己对目录的写入权限,然后在创建文件后立即删除写入权限。
结果是没有意外删除文件,只是放错了位置rm
。它不会阻止故意删除文件,因为如果您真的想删除东西,只需 chmod 即可恢复权限。