AuthorizationExecuteWithPrivileges的替换(帮助工具的临时root权限)

时间:2015-09-09 20:32:49

标签: macos root elevated-privileges

我正在编写一个带有OS X GUI的工具,只有在需要时才由用户启动,例如:删除锁定的文件。

要启用删除此类文件,有时需要对文件系统进行根级别访问。

目前,我以一种非常简单的方式解决了这个问题:该应用使用AuthorizationExecuteWithPrivileges重新启动自身。这导致要求用户输入管理员帐户和密码。如果他这样做,应用程序将以root身份运行,并可根据需要执行其文件访问任务。

这个解决方案的问题在于它是相当不安全和糟糕的样式(例如,整个UI在root用户下运行,这显然是不希望的)。此外,AuthorizationExecuteWithPrivileges现已弃用。

我该如何改进?我很清楚,我需要编写一个辅助工具来执行文件操作。

我不想使用安装程序,也不想以任何其他方式永久地授予帮助工具root权限。相反,我希望管理员每次都要验证操作,就像Finder要求用户在删除或修改受保护文件时使用管理员帐户重新登录一样。

这意味着帮助者只能暂时获得root权限。如果{@ 1}}没有被弃用,我只需通过该函数调用帮助工具,我就有了解决方案。

这意味着AuthorizationExecuteWithPrivileges可能不适合我。似乎都没有推出。还有什么?

进一步的问题:我应该使用什么样的进程间通信?基本上,我需要调用帮助程序,传递一些文件引用(路径或URL),并等待它返回结果(包括错误消息)。我找到了各种IPC方法,现在比以往任何时候都更困惑。许多参考启动过程,可能不适用于我,所以我应该研究什么?

0 个答案:

没有答案