1

我正在编写一些在 Apple Mail 中运行的代码,通过用户构建的捆绑包的已知方法。

我发现我在 Mail.app 中运行的代码似乎无法访问许多文件系统位置。例如,尝试执行一个简单的fopen调用来访问当前用户目录中的文件,或者甚至尝试使用所有访问权限(chmod 777)读取/tmp中的文件,都会失败,并将 ERRNO 设置为 1(不允许操作) .

但是,插件包中的文件系统 I/O 使用NSTemporaryDirectory提供的路径是成功的。

我对 Apple 开发世界还很陌生,所以我的问题是,这些限制是由操作系统对某种捆绑包、Apple Mail 程序强制执行的,还是我只是在做错误的事情,比如可能混合进程和文件系统权限。

非常感谢你。

4

1 回答 1

1

我不了解邮件插件,但沙盒应用程序(例如邮件)已完全包含在内,并且如果用户从对话框中选择文件(由 Apple 框架之一处理),则无法访问容器外的文件。例外情况是如果是应用程序指定的权利的一部分,例如能够访问用户的音乐或照片目录。

根据Apple的文档: -

访问文件

如果是沙箱阻止了插件,您可能会在控制台应用程序中看到一个来自守护程序沙箱的条目。

我希望 NSTemporaryDirectory 能够正常工作,因为它将被设计为与沙盒应用程序一起使用并提供有效的位置。

您可能值得阅读Apple Sandbox 设计指南

于 2013-09-18T08:16:51.593 回答