允许在 Mac OS X 应用程序中读取文件的权利是啥? (拒绝文件读取数据错误)

Posted

技术标签:

【中文标题】允许在 Mac OS X 应用程序中读取文件的权利是啥? (拒绝文件读取数据错误)【英文标题】:What is the entitlement to allow reading of file in a Mac OS X App? (deny file-read-data error)允许在 Mac OS X 应用程序中读取文件的权利是什么? (拒绝文件读取数据错误) 【发布时间】:2013-03-31 10:51:37 【问题描述】:

我正在制作一个 Mac OS X 应用程序(沙盒),它从 /etc/myfolder 中已安装的配置文件中读取数据。当我尝试使用 NSFileHandle 读取文件时,我在控制台中收到以下错误:

sandboxd: ([3251]) MyApp(3251) deny file-read-data /private/etc/myfolder/myconfig.conf

我在我的权利文件中设置了以下权利,但我仍然被沙盒拒绝。

com.apple.security.temporary-exception.files.home-relative-path.read-only com.apple.security.temporary-exception.files.absolute-path.read-only com.apple.security.files.user-selected.read-only

编辑:看来我用错了

com.apple.security.temporary-exception.files.absolute-path.read-only

我将其设置为布尔值。我的印象是,将其设置为 YES 将启用使用绝对路径读取所有文件。上述权利的值必须是允许的绝对路径。

【问题讨论】:

【参考方案1】:

您需要使用com.apple.security.temporary-exception.files.absolute-path.read-only 和绝对路径/private/etc/myfolder/myconfig.conf - (10.8.3) 沙箱似乎不接受包含符号链接的/etc/myfolder/myconfig.conf 路径。

注意:如果您正在为 Mac App Store 进行沙盒处理,您可能会面临一项几乎不可能完成的任务,即让您的应用程序被接受并获得读取 /etc 中文件的临时权限。您最好将此文件存储在应用程序的容器中 - 在 MAS 中,每个应用程序都是一个被鲨鱼出没的水域包围的岛屿。

【讨论】:

我使用的是 OS X 10.7.5,以及该组合:/private/etc/myfolder/myconfig.conf 与 com.apple.security.temporary-exception.files.absolute-path.read-只是没有用。 @MiuMiu - 没有单一的沙箱,尤其是在 10.7 中 - 几乎每个版本都在某些方面有所不同(沙箱仍在开发中)。我认为某些权利的名称甚至发生了变化。这意味着一个工作可能在另一个失败......话虽如此:检查您使用的路径不包含符号链接,它工作的最佳机会是使用绝对绝对路径!如果您需要指定多个路径,则权利是字符串值或字符串值数组。最好的选择仍然是将文件移动到应用的容器或关闭沙盒 看来我误用了“com.apple.security.temporary-exception.files.absolute-path.read-only”。我之前将其设置为布尔值。我现在已将其设置为与允许读取的绝对路径相对应的字符串,并使用 /private/etc/myfolder/myconfig.conf (仅使用 /etc/myfolder/myconfig.conf 不起作用)。谢谢!

以上是关于允许在 Mac OS X 应用程序中读取文件的权利是啥? (拒绝文件读取数据错误)的主要内容,如果未能解决你的问题,请参考以下文章

无法让 mac os x lldb 进程读取 STDIN

如何允许 Python.app 在 Mac OS X 上设置防火墙?

漏洞预警Mac OS X存在Javascript沙箱绕过漏洞,可造成任意文件读取!(含PoC)

"Mac OS X"想要进行更改。键入管理员的名称和密码以允许执行此操作("Mac OS X"想使用系统钥匙串)

Mac OS应用程序中用户选择的文件夹的读写权限?

mac os x怎么调用虚拟机里面的文件