本文将探讨WriteOnce文件锁定机制,该机制确保文件被锁定后,只能被写入一次,从而有效地防止未经授权的修改或篡改。通过深入了解这一机制,我们可以更好地保护数据的完整性和安全性。
WriteOnce 文件锁定机制
锁定文件
WriteOnce 共享文件夹提供两种锁定文件的方法:自动或手动。借助自动锁定 功能,您可以轻松地在创建和上传数据时自动锁定文件。或者,您还可以选择 在将数据添加到 WriteOnce 文件夹后从File Station或通过命令行手动锁定文件。
在 WriteOnce 文件夹中锁定文件后,您可以完全控制其保留和完整性。您可以设置保留期,指定文件应保持锁定的时间以及将其锁定在何种状态以防止修改或删除。
配置保留期并锁定文件后,文件将在 WriteOnce 状态下保持受保护且不可访问,直到设置的保留期到期。
自动锁
在 WriteOnce 共享文件夹设置过程中, 可以启用自动锁定功能,以便在一段时间不活动后自动锁定文件。您可以根据组织的需求和安全要求设置文件锁定之前的特定时间段或选择立即锁定。此功能有助于简化 WriteOnce 共享文件夹中的文件锁定过程和整体文件管理。
自动锁定设置特定于每个 WriteOnce 共享文件夹。您可以在创建共享文件夹后修改这些设置,但任何更改仅适用于当时未锁定(打开)的文件。
自动锁定计时器根据文件的最新更新计算锁定时间。如果在指定的锁定时间之前进行任何修改,计时器将延长并从您停止编辑的时间点开始重新计算。这可确保在不中断文件修改的情况下考虑所有更改。但是,如果在预定义的时间内没有发生任何更改,文件将根据原始自动锁定计时器设置被锁定。
即使您已经配置了自动锁定计时器,您仍然可以在计时器到期之前手动锁定文件,以便在必要时立即保护重要数据。如果未启用自动锁定,管理员将需要手动启动每个单独文件的锁定过程,以触发 WriteOnce 保护。
设置保留期限
无论您是为 WriteOnce 文件夹配置自动锁定还是手动锁定 WriteOnce 文件,您都必须设置保留期以确定您希望文件保持锁定状态的时间。这可以防止数据在指定时间段内被删除或篡改。无论您何时决定锁定文件、选择锁定状态或锁定的文件数量,了解保留期的工作原理都至关重要。
每个文件都可以根据您的组织的需求锁定一个独特的保留期。这使您可以自由设置单独的保留期限并指定每个文件在 WriteOnce 锁定下保留的确切持续时间。配置保留期并锁定文件后,在保留期到期之前无法解锁文件。因此,在选择 WriteOnce 文件的保留期限时必须仔细考虑。
虽然保留期限可以延长,但一旦锁定就不能缩短。因此,如果您选择永久锁定文件,则该文件在将来的任何时候都无法解锁。考虑到这些因素,在为 WriteOnce 文件夹中的文件配置保留设置时务必要小心谨慎。
配置锁定状态
配置保留期后,您必须选择锁定状态来确定文件的锁定方式。您可以看到 WriteOnce 文件旁边的锁定状态,并且有许多不同的状态需要记下。
在锁定文件之前,它处于打开 状态,允许自由修改。一旦锁定,它将根据 WriteOnce 共享文件夹设置 或 手动锁定文件时的配置设置为不可变或仅追加。保留期到期后,文件将转换为“已过期” 状态。
根据您的设置,WriteOnce 共享文件夹中可能同时存在处于不同状态的文件:
打开
- 该文件与常规共享文件夹中的文件具有相同的特征,并且不受 WriteOnce 保护。
- 根据您的权限设置,您可以编辑、删除和重命名该文件。
锁定
- 该文件在预定的保留期内受 WriteOnce 保护。 有关详细信息,请参阅如何知道保留期何时到期。
- 无法删除包含该文件的目录和父目录。
- 有两种可能的锁定状态:
- 不可变的
- 该文件无法编辑、删除或重命名。
- 如果需要,管理员可以手动将空文件转换为仅附加文件。
- 仅追加
- 该文件与不可变文件具有相同的特性,只不过可以在末尾添加新内容。
- 仅追加文件中的现有内容无法修改。
- 管理员可以在保留期内随时手动将文件转换为不可变文件。
- 不可变的
已到期
- 文件的保留期限已过期。该文件可以删除,但其原始内容无法编辑。
- 对于仅追加文件,您可以在末尾添加新内容。
- 管理员可以手动将此文件更改为不可变或仅附加以维持保护:
- 过期的不可变文件可以重新锁定为不可变文件。如果文件大小为 0 KB,也可以将文件重新锁定为仅追加。
- 过期的仅附加文件可以重新锁定为不可变或仅附加文件。
防篡改时钟
在精确计时至关重要的数据合规环境中,仅仅依赖系统时钟可能会使数据面临风险。认识到系统时钟容易被管理员或恶意行为者修改,Synology 为 WriteOnce 设计了防篡改时钟 。这种专门的计时机制独立地确定保留期的到期时间。通过不依赖系统时钟,可以防止随意调整时间,保证保留周期的准确性。
每个 WriteOnce 共享文件夹都配备有自己的防篡改时钟。当创建 WriteOnce 文件夹时,防篡改时钟会初始化并与系统时钟同步,以作为将来操作的参考。为了确保一致和准确的计时,防篡改时钟每天至少将其值写入磁盘一次。
但是,某些事件可能会导致防篡改时钟操作暂停,从而导致保留期更长。有关这些事件的更多信息,请参阅这篇防篡改时钟文章。
利用协议集成
除了直接通过 DSM File Station 锁定文件外,WriteOnce 还提供与各种文件协议的集成,例如 SMB、NFS、AFP、FTP 和 WebDAV,用于访问 WriteOnce 文件夹或锁定其中的文件。
WriteOnce 文件管理功能因每个协议而异。 NFS 和 SMB 提供高级文件管理功能,例如文件锁定和更改锁定状态,而其他协议主要侧重于错误报告。因此,本节将重点介绍 NFS 和 SMB 协议。
在使用命令通过 NFS 或 SMB 管理 WriteOnce 文件之前,请务必注意对 WriteOnce 文件的时间戳所做的更改。请参阅下表了解基本概述:
时间戳
|
对于普通文件的含义
|
WriteOnce 文件的含义
|
创建时间
|
上次对文件元数据进行更改的时间
|
保留期开始时间
|
访问时间
|
上次访问文件的时间
|
保留期结束
|
对于 WriteOnce 文件,保留期的开始 时间存储在上次元数据更改的时间戳 (ctime)上,保留期的结束时间存储在上次文件访问时间 (atime)上。这意味着在设置保留开始日期时,应在锁定之前将文件的ctime 更改为所需的保留期开始时间。锁定文件后,ctime 变得不可变,而atime 可以根据需要进行扩展。
手动锁定文件
NFS
以下命令可用于通过 NFS 手动锁定文件:1
touch -a -t [atime] [file to be locked]
通过 root 访问权限 (uid 0),可以通过以下命令将文件锁定为只读(不可变):2
chmod a-w [file to be locked]
SMB
在 Windows 环境中,可以使用 Win32 API 或 PowerShell 中的以下命令 指定atime : 1SetFileTime()
(Get-Item [file to be locked]).LastAccessTime=("atime")
然后可以通过 PowerShell 或 Windows 文件资源管理器中的以下命令将该文件锁定为只读(不可变):
attrib +r [file to be locked]
备注:
手动将锁定状态更改为仅追加
文件可以从Open更改 为Immutable 或从 Append-only 更改 为Immutable。但是,为了防止数据不可变,防止任何未经授权的更改,只允许将空的 不可变文件更改为Append-only。这种方法旨在保持文件管理灵活性和不可变数据的安全性之间的平衡。
以下命令可用于将空的Immutable 文件更改为Append-only: