为什么 mac 上的文件在复制到硬盘驱动器并从 Windows 中查看时经常被加密?

bar*_*lop 0 encryption macos

为什么 mac 上的文件在放在外部驱动器上并且该驱动器插入 Windows 系统时经常被加密?

我将解释我的意思,因为它们乍一看并不加密,因为您可以打开它们。

但仔细观察,它们会在 Windows 资源管理器中显示为绿色

在此处输入图片说明

然后 windows cipher 命令显示为已加密,其属性属性显示为已加密。

在此处输入图片说明

我不是唯一遇到这个问题的人,例如如何在 Windows 7 中列出加密文件? 一张海报写道“......我正在清理一个外部硬盘并遇到了 150 个加密的文件。所以我想知道它们是什么以及它们在哪里,因为我没有在我的电脑上使用加密。原来它来自一个很少有我可以轻松获得的下载。或者在我的电脑上看到“_MACOSX”文件夹。它们总是加密的。”

我遇到的一个例子是我在 rails 中编写的一个程序,它只是一个名为“scaffoldingtest1”的目录,我使用命令创建了该rails new scaffoldingtest1 目录,并且我已经将父目录复制到外部硬盘驱动器。

我还看到了一些与 adobe 相关的 PDF,来自 Mac 用户。

它们被加密,就像在 Windows 机器上加密一样,因为它们只能从 Windows 用户名@那台计算机上查看。如windows中加密的属性所示。那台计算机上的那个用户可以解密它们。但是他们以某种方式被加密了。如果该外部驱动器被带到另一台 Windows 计算机,则无法读取它们。

我想知道 OSX 上的什么设置导致了这种情况?

注意 - 由于一些版主倾向于删除长评论线程并丢失重要信息,这里是截至 2020 年 11 月 11 日 20:13 英国时间https://pastebin目前在此处备份的评论线程链接。 com/raw/f2Aytv6W

jks*_*ard 6

其原因是与内置 macOS Archive 程序和各种 Windows 版本中的内置解压缩器的已知兼容性问题。

当您使用 Finder 内置的“压缩”工具时,您将获得一个 ZIP 文件。ZIP 文件包含每个文件的所谓“外部文件属性”。这些属性取决于主机系统(即,不保证在各种操作系统上以相同的方式理解这些属性)。

不幸的是,macOS 工具标记文件的属性之一被 Windows 内置解压缩工具解释为将文件标记为“已加密”(这是 NTFS 文件内置的一种特殊形式的单文件加密系统)。这意味着解压后的文件具有加密属性,并且它们的名称在 Windows 资源管理器中以绿色显示。

但是,这没有明显的缺点,因为您可以轻松打开文件的属性并删除“加密”属性上的复选标记。文件内容并未真正加密,因此可以像往常一样打开文件。

您可以通过在 Mac 上使用不同的压缩工具或在 Windows 上使用不同的解压缩工具来避免此问题。

技术细节如下:

该问题是由 Windows 解压缩器错误地解析每个文件/文件夹的 ZIP 标头中的“外部文件属性”引起的。头的这个元素是主机相关的,因此解压缩器应该检查中央目录文件头的元素,称为“版本制作者”,以检查哪个操作系统制作了该文件。macOS 压缩工具在此处正确存储了“Unix”的属性值 3。

不幸的是,Windows 工具忽略了这个值并且总是将文件属性解释为好像它们是在 Windows 上创建的。“加密”问题来自这样一个事实,即在 Windows 上创建的 ZIP 文件根据 Microsoft 定义的文件属性常量 (FILE_ATTRIBUTE_<...>) 存储文件属性。特别是由值 0x4000 定义的 FILE_ATTRIBUTE_ENCRYPTED 表示加密的文件或目录。然而,Unix 系统使用 POSIX 常量,其中 S_IFDIR 是表示“这是一个文件夹”的属性 - 通常定义为值 0040000,相当于 0x4000。