繁体   English   中英

使用高级助手和SMJobBless获得根访问权限

[英]Gaining Root Access w/ Elevated Helper & SMJobBless

我正在做一些需要定期将文件安装到/ Library中的文件夹中的工作。

我知道过去我可以使用Authenticate方法中的一种,但自10.7起已弃用。

从到目前为止的阅读中我了解到的是:

我应该创建一个以某种方式通过身份验证的助手,并让该助手执行所有正在执行的任务。 我看了一些示例代码,包括一些涉及XPC和一个称为Elevator的代码,但是我有些困惑。

似乎很多事情都与设置某种客户端/服务器模型有关,但是我不确定这将如何将我的文件实际安装到正确的目录中。 大多数示例只是传递字符串。

我的问题很简单:如何在/ Library中以编程方式创建我的文件夹并定期向其中写入文件,而仅提示用户一次输入密码,而不再提示? 我真的不确定如何解决这个问题,而且似乎没有太多的文档。

您是正确的,没有太多的文档。 您基本上将编写另一个应用程序,即助手应用程序,该应用程序将与SMJobBless()一起安装。 毫不奇怪,这里最棘手的部分是代码签名。 对我来说,最不明显的部分是每个应用程序的信息plist文件中的SMAuthorizedClientsSMPrivilegedExecutables条目取决于您用来签署该应用程序的身份/证书。 编译器/链接器还有一个技巧,可以将info plist文件编译到帮助器工具中,该文件将是单个可执行文件,而不是捆绑包。

一旦启动并运行了助手应用程序,则必须设计一种与之通信的方法,因为这是两个不同的过程。 XPC是一种选择,也许是最简单的选择。 XPC通常与服务器进程一起使用,但是您在这里使用的只是XPC的通信端。 基本上,它在两个应用程序之间来回传递字典。 为字典创建标准格式。 我将@“ action”,@“ source”和@“ destination”与3个不同的动作值一起使用,分别是@“ filemove”,@“ filecopy”和@“ makedirectory”。 这些是我的助手应用程序可以做的三件事,如有必要,我可以轻松添加更多内容。

助手应用程序将基本上设置XPC连接和事件处理程序的内容,并等待连接和命令。 这些命令将只是一个字典,因此您可以检查适当的键/值并执行任何操作。

如果您需要更多帮助,我可以提供更多详细信息和代码,但是这个问题已经9个月了,所以我不想浪费时间为您提供已经确定的详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM