我需要授予用户访问 NFS 共享的权限,他们可以在该共享上放置一些文件,然后删除这些文件。假设他们是流氓,可能会尝试真正删除文件(我不确定 shred 是否可以通过 NFS 工作,但不管是什么)。我们不希望他们意识到 NFS 共享已更改(这是他们的主目录)。
是的......我知道奇怪的要求!
NFS 上是否有文件系统或设置,所以看起来用户正在删除文件,而实际上它们正在存储?有人告诉我这是一个修订文件系统,但我找不到很多关于它的参考资料。
我知道您可以使用恢复程序在 ext3 和类似系统上“取消删除”,但我们想要比这更强大的东西,最好是能以某种易于访问的形式存储所有文件副本的东西。
使用 CentOS 5.8。用户无法删除他们的文件,因为他们是“流氓”并且不再受信任(这很复杂,这就是我所知道的)。
版本文件系统
NILFS做自动和连续的快照,所以它可以跟踪修改和删除的文件。版本 2(又名 NILFS2)也有一个简洁的垃圾收集机制来避免文件系统因太多快照而变满!我肯定会看看那个解决方案!
在维基百科上的搜索也返回了 ext3cow,它在块级别进行写时复制,并且可以跟踪文件版本。
这两种解决方案现在已经存在了一段时间,但我不能说它们在企业环境中的成熟度,因为我没有使用它们的经验。
另一种方法
可以简单地使用增量备份系统,一种将 NFS 共享保存在不同位置的 rsync,但它也可以恢复已删除的文件。
这样的解决方案不是防弹的并且需要额外的存储空间,因此它可能不符合您的要求或预算。此外,该解决方案会定期运行,因此在备份会话之间创建和删除的每个文件都将最终丢失。
如果这些限制仍然符合要求,那么看看rdiff-backup。它是一个命令行工具,可以正确、轻松地完成这项工作。
或许,同时采用这两种方法会更安全。
我不知道 NFS,但您绝对可以使用 CIFS 来做到这一点。有一个名为 samba 的模块
vfs_recycle
。当它打开时,每个删除的文件实际上都会移动到您在配置中指定的目录。您还可以包含veto files
指令并声明回收目录,以便用户看不到回收。在 Linux上总是有ZFS选项,并定期对文件系统导出进行快照。ZFS Linux 变体的自动快照服务示例。
.zfs/snapshot/
默认情况下,ZFS 快照以对用户透明的方式显示在(不可见的)树下文件系统共享的子目录中。如果您使用 ext* 文件系统,您可以使用属性来获得您想要的行为。您可以使用不可变标志(如果启用它,则无法对该文件执行任何操作)或“u”标志(删除文件时,将保存其内容。这允许用户要求取消删除。)
http://docs.petervg.nl/index.php/component/content/article/41-linux/59-ext3-file-attributes