gpt4 book ai didi

macos - 应用程序沙盒、XPC 服务和不同的权利

转载 作者:行者123 更新时间:2023-12-03 16:17:50 26 4
gpt4 key购买 nike

我的 cocoa 应用程序设计是一个 .app(UI)和三个 XPC 服务。

主应用程序需要文件只读才能显示powerbox并在 UI 中显示所选路径

  • com.apple.security.app-sandbox
  • com.apple.security.files.bookmarks.app-scope
  • com.apple.security.files.user-selected.read-only

两个 XPC 服务需要文件只读

  • com.apple.security.app-sandbox
  • com.apple.security.files.bookmarks.app-scope
  • com.apple.security.files.user-selected.read-only

一个XPC服务需要文件读写

  • com.apple.security.app-sandbox
  • com.apple.security.files.bookmarks.app-scope
  • com.apple.security.files.user-selected.read-write

由于用户交互流程,主应用程序会打开一个 powerbox 对话框,以允许用户选择一个目录并将其显示在 UI 中。然后主应用程序将其保存为安全范围的书签。书签数据根据需要通过 XPC 连接发送,每个单独的 XPC 进程都会解析书签以访问其自己的沙箱中的这些文件。

问题是,除非我将主应用程序(打开 powerbox)设置为具有文件读写访问权限,否则需要写入访问权限的 XPC 服务将无法获得该权限,即使它有权限file 指定文件读写访问权限。控制台中记录了以下内容:

deny file-write-unlink <file path>

解决此问题的唯一方法是为打开 powerbox 文件的主应用授予读写权限,还是重新设计 UI 流程以便需要写入访问权限的进程显示 powerbox?最终目标是让每个进程拥有尽可能少的权限。理想的权利是在主 .app 进程中没有文件访问权限,两个 XPC 服务文件只读,一个 XPC 服务文件读写。谢谢!

编辑:

Powerbox and File System Access Outside of Your Container :

The OS X security technology that interacts with the user to expand your sandbox is called Powerbox. Powerbox has no API. Your app uses Powerbox transparently when you use the NSOpenPanel and NSSavePanel classes.

最佳答案

我不是沙盒方面的专家,但是,嘿,即使是编写它的人也不是。劲爆!

无论如何,从架构上来说,嵌入式 XPC 服务只允许包含应用程序的子集(如果确实发生了这种情况)是有意义的。有人可能会反对它,但支持的论点是,如果应用程序必须在顶层声明所有内容,而较低级别(XPC)仅是,那么系统和用户会更容易理解应用程序可能会做什么。允许做或多或少的事情。

虽然尝试将您的权利保持得尽可能小是令人钦佩的,但在这种情况下,您实际上是在打开一个文件进行读写,因此您最好声明它。

关于macos - 应用程序沙盒、XPC 服务和不同的权利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010613/

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