MacOS Mojave 已将 SIP 的影响扩展到用户的主目录。默认情况下,拒绝访问用户主目录中的许多目录。下面是这些目录的几个示例。
~/Library/Messages
~/Library/Mail
~/Library/Safari
[… etc.]
Run Code Online (Sandbox Code Playgroud)
为了从终端访问这些目录,终端应用程序必须在系统偏好设置 > 安全和隐私 > 隐私 > 全盘访问中定义。配置有效,除了我系统上的以下目录。容器中的其他数据可能存在相同的行为 - 不确定。
~/Library/Containers/com.apple.mail/Data/DataVaults
Run Code Online (Sandbox Code Playgroud)
有趣的行为很容易重现。该目录甚至不可见。
cd ~/Library/Containers/com.apple.mail/Data
ls
ls: DataVaults: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我用来rsync
将我的主目录镜像到外部硬盘驱动器;但是,我不能再这样做了,因为rsync
抱怨“遇到 IO 错误——跳过文件删除”,这破坏了镜像效果。我没有找到有关此问题的任何文档。苹果支持不知道。为什么这个目录很特别,我们如何在不禁用 SIP 的情况下访问它?
禁用 SIP 的进一步调查结果
根据系统信息,Mojave 升级是在 2018 年 9 月 24 日进行的。该目录也是在同一天创建的。我的用户拥有目录,而员工组是组所有者。它的权限是 0700。它具有扩展属性,如@符号所示。没有 ACL。没有旗帜。
xattr -l ~/Library/Containers/com.apple.mail/Data/DataVaults
com.apple.quarantine: 0082;00000000;Mail;
com.apple.rootless: Mail
ls -lO DataVaults
(no result; exit 0)
Run Code Online (Sandbox Code Playgroud)
禁用 SIP、删除目录并重新启用 SIP 后,只要打开邮件,目录就会以相同的权限重新出现。邮件(版本 12.0 (3445.100.39))没有插件。
2018 年 10 月 16 日全新安装的结果
格式化并重新安装后该目录不存在。我仍然不知道它是如何开始的。
2019 年 3 月 29 日升级的结果
该目录在升级到 Mojave 10.14.4 (18E226) 和/或邮件版本 12.4 (3445.104.8) 时重新出现。
DataVaults 目录与权利有关。除非权利所有者授予访问权限,否则访问将被阻止。Mail.app 的权利可以列出如下,并提供一个 XML plist。
codesign -d --entitlements - /Applications/Mail.app/
Run Code Online (Sandbox Code Playgroud)
此时,获取目录访问权限的唯一剩余方法是关闭 SIP。关于我的rsync
问题,我选择保持 SIP 开启并使用rsysnc
选项 ,exclude
忽略 DataVaults 目录,顺便说一下,该目录没有内容。
来自Eclectic Light Company博客的评论,提供了更多线索:
/var/folders/t9/[long ID]/C/com.apple.QuickLook.thumbnailcache”
是一个 DataVault,它是 Apple 在 10.13.4 左右推出的一种新型隐私容器。这些文件/文件夹由“UF_DATAVAULT”文件标志标识。这些是通过 SIP 实现的(不是技术上的沙盒,而是相同的要点)。应用程序需要授权来创建或访问特定的数据库,甚至 stat() 一个 DataVault 文件夹。这些设备值得深入研究。Apple 没有(显然也没有计划)将这些权利授予第三方。考虑一下这意味着什么——Apple 正在创建一个平台,只有在 Apple 应用程序中创建的数据才能获得最高级别的安全性。
还要考虑到您(用户)在不关闭 SIP 的情况下无法看到这些 DataVault 中的内容。很难说苹果在这些中保留了什么,但其中一些有点令人担忧。以下是一些已知的数据保险库:
~/Library/VoiceTrigger/SAT
~/Library/Containers/com.apple.mail/Data/DataVaults
/private/var/folders/0z/fs4vdwmx6g31n69qt5v5ff580000gn/0/com.apple.nsurlsessiond
第一个显然有“Siri Audio Transcripts”——你在 Mac 上对 Siri 说的一切。
我没有在 上找到标志~/Library/Containers/com.apple.mail/Data/DataVaults
,并且 Mojave 的全新安装导致该目录不再出现。
一个总结概述访问控制的也出版了。