停止在 Linux 中删除文件

停止在 Linux 中删除文件

我正在寻找一种方法来阻止意外删除 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 没有禁止,请参阅上文)或编译他们自己的版本rmunlink完全版本,从而规避了上述所有恶作剧。

要真正防止文件被删除,正确的 Unix 权限或 ACL 才是关键。

答案2

刚刚看到这个已经有 1000 次浏览量,但是我想要的答案却不在这里。

解决方案非常简单,您可以删除目录本身的写权限,dr-xr-x---在这种情况下保留其权限。

这样可以阻止在目录中创建或删除文件,但您可以完全访问目录中的文件。我们更改了应用程序,使其在需要创建文件时仅授予自己对目录的写入权限,然后在创建文件后立即删除写入权限。

结果是没有意外删除文件,只是放错了位置rm。它不会阻止故意删除文件,因为如果您真的想删除东西,只需 chmod 即可恢复权限。

相关内容