我的Cocoa应用程序设计是一个单一的.app文件(用户界面)和三个XPC服务。
主要应用程序需要只读文件来显示powerbox并在UI中显示所选路径。
问题是,除非我将打开电源框的主应用程序设置为具有文件读写访问权限,否则需要写访问权限的XPC服务将无法获得它,即使其授权文件指定了文件读写访问权限。以下内容记录在控制台中:
唯一的解决方法是给打开powerbox文件的主应用程序授予读写权限,或重新设计UI流程,使需要写入访问权限的进程显示powerbox。最终目标是让每个进程拥有尽可能少的权限。理想的权限是在主.app进程中没有文件访问权限,在两个XPC服务中具有文件只读权限,在一个XPC服务中具有文件读写权限。谢谢!
编辑: Powerbox and File System Access Outside of Your Container:
与用户交互以扩展您的沙箱的OS X安全技术称为Powerbox。 Powerbox没有API。使用NSOpenPanel和NSSavePanel类时,您的应用程序会透明地使用Powerbox。
主要应用程序需要只读文件来显示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
问题是,除非我将打开电源框的主应用程序设置为具有文件读写访问权限,否则需要写访问权限的XPC服务将无法获得它,即使其授权文件指定了文件读写访问权限。以下内容记录在控制台中:
deny file-write-unlink <file path>
唯一的解决方法是给打开powerbox文件的主应用程序授予读写权限,或重新设计UI流程,使需要写入访问权限的进程显示powerbox。最终目标是让每个进程拥有尽可能少的权限。理想的权限是在主.app进程中没有文件访问权限,在两个XPC服务中具有文件只读权限,在一个XPC服务中具有文件读写权限。谢谢!
编辑: Powerbox and File System Access Outside of Your Container:
与用户交互以扩展您的沙箱的OS X安全技术称为Powerbox。 Powerbox没有API。使用NSOpenPanel和NSSavePanel类时,您的应用程序会透明地使用Powerbox。