gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:09:05 29 4
gpt4 key购买 nike

通过 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 应用程序与文件系统(如您的(之前的)示例)进行交互,应用程序需要使用提升的权限,通常使用授权服务——App Sandbox 不允许这样做。看一下标题为“Determine Whether Your App Is Suitable for Sandboxing”的部分,它应该可以回答您可能有的任何其他问题。

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

关于macos - Mac App Store 上销售的沙盒应用程序可以访问系统文件夹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594899/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com