如何锁定文件以防止删除但仍使其可写?

如何锁定文件以防止删除但仍使其可写?

我想将文件锁定以防止删除但仍可写入。我该怎么做?

有问题的文件是 Truecrypt 卷,作为 NAS SMB 网络共享上的文件,所以我不想意外删除它。

答案1

对于 Windows:

  1. 拒绝对文件的“删除”权限。
  2. 删除或拒绝父目录上的“删除子项目”权限。

对于 Unix(包括 OS X):

  1. 删除父目录的“写入”权限。

请注意,这只能防止文件被移除(删除),但无法防止意外截断或用垃圾覆盖。如果文件是可写的,则可以向其中写入任何内容,就是这样。

此外,文件权限几乎不可能在操作系统之间转换。如果 NAS 运行 Linux,而您尝试在 Windows 中设置权限,最终结果可能与您的预期不同。

答案2

在 Linux 中,您可以创建指向该文件的硬链接。然后您可以写入并“删除”它,但您只会删除目录中的引用。另一个硬链接仍将指向该文件的内容,因此无论如何它都不会被删除。

在 Unix 世界中,您不会“删除”文件。您只是减少指向它的硬链接数量。当没有其他东西指向它时,该空间被视为空闲空间,可以使用……

答案3

备份。你无法真正保护可写文件免受损害即使你可以避免删除。每天备份。

答案4

在像 btrfs 这样的 cow 文件系统上,您可以通过使用子卷 + 快照或带有 --reflink=always 的 cp 来实现这一点,这将有效地产生任意数量的文件,而这些文件将消耗与一个文件相同的空间 + 一些开销(但如果没有大量的副本或快照,特别是与小文件大小相结合,这应该不会引人注意)直到它们被修改,在这种情况下,只有已更改的部分会单独存储,其余部分仍然是共享的。然后分别设置每个的权限(为了实现您想要的效果,只需定期制作具有只读权限的快照或副本(如果它是快照,可以选择将其挂载为 ro 或不全部挂载,如果它是文件,请使用 chattr +i(用户即使具有写权限也不能写入或修改文件)如果您是偏执狂的话,请在一个副本上)。

相关内容