拖放 DMG 应用程序包的根所有权

Root ownership for drag & drop DMG app bundle

我有一个 MacOS 应用程序包,它作为 DMG 拖放安装程序分发。最近添加了从应用程序内部连接到 VPN 的要求,如果使用 sudo 调用二进制文件但从 .app 包启动时则不行。

有没有什么方法可以让这项工作永远有效,只需要用户在第一次进行身份验证?

(强烈)推荐的方法是通过特权帮助工具,可以使用 SMJobBless() 从应用程序安装该工具。安装后,您的应用程序可以使用 XPC 与特权工具通信,该工具将始终 运行 具有 root 权限,而您的应用程序仍然没有特权。

Apple 维护了一个关于如何执行此操作的示例项目:

https://developer.apple.com/library/archive/samplecode/EvenBetterAuthorizationSample/Listings/Read_Me_About_EvenBetterAuthorizationSample_txt.html#//apple_ref/doc/uid/DTS40013768-Read_Me_About_EvenBetterAuthorizationSample_txt-DontLinkElementID_17