使用 Linux 文件系统进行一次写入,多次读取 (WORM)

使用 Linux 文件系统进行一次写入,多次读取 (WORM)

我有一个要求,将文件写入 Linux 文件系统,这些文件随后不能被覆盖、追加、以任何方式更新或删除。sudo 用户、root 或任何人都不能这样做。我试图满足金融服务记录保存条例 FINRA 17A-4 的要求,该条例基本上要求将电子文档写入 WORM(一次写入,多次读取)设备。我非常希望避免使用 DVD 或昂贵的 EMC Centera 设备。

是否有 Linux 文件系统,或者 SELinux 是否支持在写入后立即(或至少很快)使文件完全不可变的要求?或者有人知道我可以使用 Linux 权限等在现有文件系统上强制执行此操作的方法吗?

我知道我可以设置只读权限和不可变属性。但我当然希望 root 用户能够取消设置这些权限。

我考虑将数据存储到已卸载然后以只读方式重新安装的小卷中,但后来我认为 root 仍然可以卸载并重新安装为可写。

我正在寻找任何聪明的想法,最坏的情况是我愿意做一些编码来“增强”现有的文件系统来提供这一点。假设有一个文件系统是一个很好的起点。并安装一个精心配置的 Linux 服务器来充当这种类型的网络存储设备,不做任何其他事情。

毕竟,文件加密也会很有用!

答案1

您可以使用 OpenAFS 和只读卷来实现这一点。但是,要使其工作,需要安装大量基础设施,并且可能无法满足要求。

http://www.openafs.org/

基本上,有一个可写卷和一个或多个该卷的只读副本。在释放可写卷之前,客户端无法更改只读副本。释放卷需要管理员权限。

似乎任何解决方案都需要专门的硬件或复制专门硬件语义的网络文件系统。

答案2

看来,如果不编写自定义文件系统/内核代码,就无法做到这一点。

一个可行的解决方案似乎是使用带有 WORM 存档存储选项的 Amazon Glacier。根据 AWS 官方博客:https://aws.amazon.com/blogs/aws/glacier-vault-lock/

[...] 新的 Glacier 功能允许您使用各种合规性控制锁定您的保管库,这些控制旨在支持这一重要记录保留用例。您现在可以在保管库上创建保管库锁定策略并将其锁定。一旦锁定,策略将无法覆盖或删除。Glacier 将强制执行该策略,并根据其中指定的控制(包括预定义的保留期)保护您的记录。

锁定保管库锁定策略后,您无法更改它。但是,您仍然可以使用单独的保管库访问策略来更改和配置与合规性无关的访问控制。例如,您可以向业务合作伙伴或指定的第三方授予读取权限(有时法规会要求这样做)。

对我来说,这正是我所需要的,无需花费 NetApp 或 EMC 硬件的费用,同时似乎满足了记录保留要求。

答案3

如果您只需要从用户无法覆盖文件的系统中访问文件,您可以安装您没有写入权限的远程卷。最简单的方法是安装只读的 samba/cifs 共享。

否则,如果您需要一种方法允许用户写入新文件(不能被覆盖或修改),解决方案是使用 FUSE curlftpfs 挂载 FTP 路径。

您可以使用以下指令设置 proftpd 目录:

AllowOverwrite off
<Limit WRITE>
  DenyAll
</Limit>
<Limit STOR>
  AllowAll
</Limit>

这样,新文件可以存储在挂载的目录中,但不能再被修改或删除。

链接: CurlFtpFSFTPD软件

答案4

这是“可靠备份“问题,而实现它的唯一方法是使用多个远程蠕虫文件系统,这些文件系统使用和共享校验和,并且没有共享的物理或管理访问权限。这确保所有内容都是一次写入、复制、完整性可证明的,并且在单个块被擦除、更改或损坏的情况下可恢复。

Plan9 或其衍生产品可能实现所有必需的功能。请参阅计划9文蒂

相关内容