2011-04-24 13 views
5

我想使用BetterAuthorizationSample,而不是所谓的“恶意”的方式使用setuid为了获得root权限。如何使用BetterAuthorizationSample? - 可可

当前我正在使用AuthorizationCreate();使用BLAuthentication具有对某些文件进行修改的root访问权限,但是我对每次启动应用程序时必须不断输入密码的事实感到有些恼火。

所以我遇到了苹果的HelperTool的方法,我只是无法弄清楚。

我几个月来一直在与可可一起工作了几个月,但这只是我不可及的,但我仍然需要它。我将如何实现此工具来执行简单的根特权任务?

是否有一种更简单的方法来使用HelperTool的概念,以便我的用户只需输入一次密码即可永久授予root权限?

+3

只是为了避免这种情况:[BetterAuthorizationSample](http://developer.apple.com/legacy/mac/library/samplecode/BetterAuthorizationSample/)现在是Legacy文档库的一部分。请注意何时询问此问题。可能有比BetterAuthorizationSample实现的更现代的解决方案。 – 2012-12-11 09:12:27

回答

2

在Mac OS X上执行帮助工具的“现代”方法是将其作为应用程序的一部分发送,并且use the ServiceManagement framework to deploy it。部署该工具时,用户只输入一次密码。它将它安装为launchd作业;从那时起,你使用any launchd on-demand mechanism启动助手,并让它为你工作。

请注意,上面链接的博客文章建议您保护助手的后续调用使用Authorization Services升级,以避免任何人都可以使用的任意权限升级。尽管您可以使用AuthorizationRightSet()在策略数据库中创建应用程序的授权令牌,这似乎对“用户只能输入一次密码”有所影响,因此您可以实际定义用户是否需要在首次部署时提供密码。

该帖子的示例代码为on GitHub,并且演示了使用ServiceManagement来部署帮助器工具和授权服务以控制对其的访问。

+2

我以为我会叮嘱你,只是指出,如果你是沙盒主应用程序,这些都不会起作用。 SMJobBless()将失败。最后我从Quinn那里听说,他正在开发一个更新的示例,适用于希望在App Store之外发布沙盒应用程序但仍能够实现这种功能的开发人员。 – rudy 2012-12-11 21:29:54