如何使用BetterAuthorizationSample? - 可可

时间:2011-04-24 23:19:14

标签: objective-c cocoa authentication root

我正在尝试使用BetterAuthorizationSample,而不是采用所谓的“恶意”方式使用setuid来获得root权限。

目前我正在使用AuthorizationCreate();使用BLAuthentication可以获得更改某些文件的root访问权限,但是每次应用程序启动时我都必须不断输入密码,这让我感到有些恼火。

所以我遇到了Apple的HelperTool方法,我无法弄明白。

我已经和Cocoa合作了几个月了,但这只是我无法实现的,但我仍然需要它。我如何实现此工具来执行简单的root权限任务?

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

1 个答案:

答案 0 :(得分:2)

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

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

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