Answers:
我已经做过一些测试,可以提供一个(希望的)权威答案。
简短的回答:版本与实际文件存储在同一磁盘(或磁盘映像)上,因此版本不应将信息泄漏到加密映像之外。但是,可能还会有其他泄漏,请参见下文。
长答案:版本在每个卷的顶部创建一个不可见的文件夹,名为“ .DocumentRevisions-V100”,其内部结构如下:
.DocumentRevisions-V100
.cs
ChunkStorage (this is presumably used to store chunks of large files that didn't entirely change between versions)
AllUIDs (this is only created on disks that have permissions ignored)
ChunkTemp
db-v1
db.sqlite (this is the primary index of document IDs, etc)
PerUID (this is only created on disks that have ownership respected)
501 (documents created/owned by user #501)
502 (etc...)
staging (???)
有关sqlite索引和调解访问它的后台守护程序的信息,请阅读ars technica上John Siracusa的出色评论。
文档版本本身存储在AllUID或PerUID /您的用户ID的子目录中。在此之下,每个版本控制的文档都有其自己的子目录,该子目录的编号从1开始。在该目录下是一个名为“ com.apple.documentVersions”的文件夹,并且在此之下,每个修订版都存储为单独的文档(除非将其分成多个部分- -我还没有尝试过使用UUID和类型扩展名命名的大型文档。例如,如果我(用户#501)在启动卷上编辑rtf文档并保存了多个修订,它们可能存储为:
/.DocumentRevisions-V100/PerUID/501/1/com.apple.documentVersions/0787B7C3-DE11-4065-9FD9-61870212011D.rtf
/.DocumentRevisions-V100/PerUID/501/1/com.apple.documentVersions/D533CF36-0D49-4910-B0EB-C92395C05726.rtf
然后,如果我打开另一个rtf文件并保存了一个版本,则该文件的名称可能为:
/.DocumentRevisions-V100/PerUID/501/2/com.apple.documentVersions/74A6EF6E-A22A-4196-B560-40ABDBF46DF4.rtf
如果将其保存在SecretDocs映像上(忽略所有权挂载),版本将存储为:
/Volumes/SecretDocs/.DocumentRevisions-V100/AllUIDs/1/com.apple.documentVersions/2ED4DAFD-9BCF-4158-BFDB-F9EEC631E44A.rtf
顺便说一句,版本文件的权限似乎是从原始文件中克隆的。对封闭文件夹的权限往往只允许执行(即,您看不到文件名,但是如果您知道文件名,则可以访问它)。例如,PerUID / 501设置为仅对用户501执行,而对其他任何人均无访问权限。db-v1文件夹仅允许root用户访问。如果不进行详细调查,它似乎已被锁定。
现在,关于其他泄漏,我威胁您使用:Lion应用程序在退出时倾向于保存其状态,因此,如果您退出时打开了机密文档,则其中的某些信息(例如我认为的屏幕截图)可能会存储在〜 / Library / Saved Application State / someappid.savedState。只要您在保存之前就关闭,我认为您在这里很安全。
Phil M的一个很好的问题!
我将尽可能简短。关键概念:
在某些情况下,
…在10.7(Build 11A511)中:使用的子目录
~/Library
,访问权限不仅限于root用户。…
— https://discussions.apple.com/message/15739595#15739595(2011-07-25)
另外,略微改编自https://discussions.apple.com/message/15741724#15741724
在我最近的同一台AFP服务器测试中,远程.png屏幕截图的版本为:
是本地的并且在适当隐藏的范围内~/Library
……请参阅自动保存,版本,简历和透明应用程序生命周期(TAL):新兴的技术信息
是不是本地的/.DocumentRevisions-V100
是不是远程的方式/.DocumentRevisions-V100
…
reunion:~ centrimadmin$ ls -ld /.DocumentRevisions-V100
ls: /.DocumentRevisions-V100: No such file or directory
在本地可能存在一些相关数据,/.DocumentRevisions-V100
但是在这种情况下,远程文件的版本是本地的,而不仅限于root用户。例如,请参见http://www.wuala.com/grahamperrin/public/2011/07/25/e/?mode=gallery上的屏幕快照001,该屏幕快照显示了与文件服务器断开连接后打开的远程文件的本地版本。
回到“不同问题...”中的开头问题……加密的.sparsebundle图像,安全性。考虑一下:
在加密的稀疏捆绑磁盘映像的上下文中,与MS-DOS(缺少支持)相比,用户更可能使用JHFS +(支持永久版本存储)
但是:在卸载诸如此类的卷之后,应该进行测试以查看未加密的版本是否保留在用户的主目录中(该目录可能未被加密)。
就个人而言,我发现fseventer在诸如此类的测试情况下最有用。YMMV。
此答案中的某些问题可能会引起一些问题,这些问题不特定于加密,不特定于稀疏捆绑磁盘映像,不特定于安全性。这些都是潜在的复杂主题,因此,请注意:我可能不鼓励在单独回答每个问题的同时,不在此答案下方的评论中提问。
我检查了Apple的Developers文档中的版本功能,似乎表明文档的先前版本与文档的当前版本存储在相同的“位置”(意味着相同的文件或文件夹)中。但是该文档缺少详细信息。
AppleInsider中还有一篇名为“ Inside Mac OS X 10.7 Lion:自动保存,文件版本和Time Machine”的文章,内容为:
与Time Machine不同,Version将所有更改快照附加在本地文档文件中,避免了文件系统混乱,并且无需从Time Capsule或其他外部磁盘访问备份,而只是恢复到过去几个小时内创建的先前Version。
我尚未找到有关“版本”功能如何工作的任何更详细的描述。
.DocumentRevisions-V100
(而不是与文档位于同一文件中)
戈登,这对每个人以及Knox和Espionage的软件开发人员(我都使用这两个应用程序)都是好消息。
这是用户应注意的一种情况。如果要访问外部驱动器上已安装的加密磁盘映像中的文件,则版本文件可能以未加密形式存在于用户的系统驱动器上。一种解决方法是在安装前将.sparsebundle复制到系统驱动器。
另一种情况是,如果.sparsebundle位于同一网络上的另一台Snow Leopard Mac上,并且该图像在网络上共享,则可以通过Finder浏览到Lion Mac上进行安装。(有时我会这样做。)这肯定会导致任何版本文件都以未加密的形式放在用户的系统磁盘上。一种解决方法是使用屏幕共享来控制Snow Leopard Mac,然后在该Mac上的映像中进行安装和处理。
底线是,在Lion中,使用加密的磁盘映像时,如果映像不在系统驱动器上,人们需要比以往任何时候都更加了解和谨慎。我希望Knox和Espionage开发人员可以就这些问题向客户发出警告。
编辑:格雷厄姆的答案似乎支持我的大多数假设。
.DocumentRevisions
在加密卷上。@戈登的答案似乎也证实了这一点。