我正在编写一些在Apple Mail中运行的代码,通过用户构建的捆绑包的已知方法。
我发现在Mail.app中运行的代码似乎无法访问许多文件系统位置。例如,尝试进行简单的fopen
调用以访问当前用户目录中的文件,或者甚至尝试使用所有文件读取 / tmp 中的文件 - 访问权限(chmod 777)将失败并且ERRNO设置为1(不允许操作)。
但是,通过NSTemporaryDirectory
提供的路径,插件包中的文件系统I / O成功。
我对Apple开发世界还不熟悉,所以我的问题是,如果这些限制是由操作系统针对某种捆绑软件强制执行的,Apple Mail程序或者我只是在做错误的事情,例如可能混合进程和文件系统权限。
非常感谢。
答案 0 :(得分:1)
我不知道邮件插件,但沙盒应用程序(如邮件)已完全包含,无法访问容器外的文件,用户无需从对话框中选择文件,由其中一个处理Apple框架。例外情况是if是应用程序指定的权利的一部分,例如能够访问用户的音乐或照片目录。
根据Apple的文档: -
如果是阻止插件的沙箱,您可能会在控制台应用中看到来自守护程序沙盒的条目。
我希望NSTemporaryDirectory能够正常运行,因为它可以与Sandboxed应用程序配合使用,并提供有效的位置。
您可能需要阅读Apple Sandbox Design Guide