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


33

我想使文件被锁定以防止删除,但仍可写。我该怎么做呢?

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


1
这是不可能的。写零等于删除它。
soandos 2011年

@soandos-我不同意我的担心。因为向其写入零仍然意味着该文件存在,但已充满零。确实,有Linux命令可以创建一个充满零的“稀疏”文件。
therobyouknow

Answers:


34

对于Windows:

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

对于Unix(包括OS X):

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

请注意,这只会阻止文件被删除(删除),但不会对意外截断或垃圾覆盖产生任何影响。如果文件可写,则可以在该文件中写入任何内容。

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


我认为最好的答案是。+1,谢谢。是的,NAS是Lacie 2big,在ARM上运行linux版本。
therobyouknow

1
实际上,您不需要拒绝删除,只需从现有访问控制项(ACE)中删除“删除”即可。(拒绝ACE使事情变得更复杂,从长远来看通常不是一个好方法。)
理查德(Richard

2
@Richard:AFAIK,删除需要完全禁用该文件的ACL继承,这最终使它变得更加复杂。
grawity

我同意Grawity。拒绝删除权限是解决方法。如果将共享权限设置为“修改”,则拒绝将仍然阻止删除,而将其保留为空白将允许删除。
surfasb

26

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

在Unix世界中,您不会“删除”文件。您只需减少硬链接的数量即可。如果没有其他指向,则该空间被认为是可用的并且可以使用...


2
好主意。不知道@Rob是否可以在他的NAS上创建硬链接,但是如果他可以,那将是一个非常聪明的解决方案。
Carf 2011年

1
+1如果可能的话,我会结合接受的答案。或分开(如果没有)。+1表示思考。但是有问题的linux共享是NAS驱动器,不确定是可用的控制台功能,还是嵌入式或半嵌入式linux。还是+1,因为它可能会帮助其他拥有常规linux台式机或计算机作为共享对象的人。
therobyouknow 2011年

2
NTFS应该使用相同的技术。
Rotsor 2011年

+1 RBerteig和+1 CarlF用于支持woliveirajr解决方案。
therobyouknow 2011年

12

备份。即使可以删除,您也无法真正保护可写文件不受损坏。每天备份。


4
+1。无论使用其他皮带和吊带,都应这样做。
RBerteig

+1 CarlF和+1 Rerteig。完全同意。文件也都备份到光学介质上(DVD-R,+ R,+ R DL和blu-ray 25gb和dl 50gb)。我可能还会考虑第二块硬盘。
therobyouknow 2011年

我要补充,我有文件的备份 TrueCrypt的体积是容器文件。不是truecrypt卷本身。
therobyouknow


0

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


0

在“标准” UNIX中,如果目录是可写的,则似乎无法保护单个文件不被删除。凭直觉,可能希望用'chmod'从模式位清除w保护应该可以防止删除,但这不是这种情况。同样,在AFS中,您不能保护单个文件不被删除,因为ACL条目(缺少或拒绝相关的“ d”权限)仅适用于整个目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.