Mac App Store 上销售的沙盒应用程序可以访问系统文件夹吗?

2024-04-26

通过 Mac App Store 销售的应用程序是否可以访问系统文件夹?

我的意思是:我的应用程序需要读取沙箱区域之外的目录内容,比如/Library/StartupItems如果用户愿意,还可以删除那里的文件。

沙盒应用程序是否可以访问系统文件夹并删除其中的文件?如果不能删除,至少可以读取吗?

如果我想在 Mac App Store 上销售,是否必须启用沙盒?

我随机尝试了一个目录:

  NSString *path = @"/Library/StartupItems";
  NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];

我可以获得目录列表。如果应用程序被标记为沙盒,我如何阅读该内容?我不明白。


不可以,通过 Mac App Store 销售的 OS X 应用程序无法按照您所描述的方式访问资源。还要求所有应用程序都经过沙箱处理,并使用有效的 Mac 开发人员计划证书进行联合签名。

至于能不能读书/Library/StartupItems(已弃用)当您的应用程序被标记为“沙盒”时;这不仅仅是检查选项的问题。您还必须确保选择“使用权利文件”并且应用程序经过正确的协同设计。完成后,您可以使用以下命令检查以验证它是否已在终端中正确沙箱化:

codesign -dvvv --entitlements :- Some.app/Contents/MacOS/Executable

此外,还有某些目录可以读取“世界可读”的文件:

/bin
/sbin
/usr/bin
/usr/lib
/usr/sbin
/usr/share
/System

为了允许 OS X 应用程序像您的(之前的)示例一样与文件系统交互,应用程序需要使用提升的权限,通常使用Authorization Services- 应用程序沙箱不允许。看一下标题为“确定您的应用程序是否适合沙箱 https://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/DesigningYourSandbox/DesigningYourSandbox.html#//apple_ref/doc/uid/TP40011183-CH4-SW3”,它应该可以解答您可能存在的任何其他问题。

沙盒在很多方面都有好处,但同时也有很大的限制。如果您的应用需要执行超出允许范围的操作,您可以选择不通过 Mac App Store 进行销售,也不使用沙盒。一些开发人员还创建了两个不同版本的应用程序(Mac App Store 版本和非 Mac App Store 版本)。如果您的应用程序依赖于容器之外的大部分内容,您肯定需要考虑/权衡沙盒的利弊。

  • 应用程序沙箱指南 https://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxQuickStart/AppSandboxQuickStart.html#//apple_ref/doc/uid/TP40011183-CH2-SW3
  • 文件系统编程指南 https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html
  • 授权服务 C 参考 https://developer.apple.com/library/mac/documentation/security/Reference/authorization_ref/Reference/reference.html#//apple_ref/doc/uid/TP30000826-CH1g-CJBHFEJI
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac App Store 上销售的沙盒应用程序可以访问系统文件夹吗? 的相关文章

随机推荐