如何使用BetterAuthorizationSample?- 可可

lab*_*b12 5 authentication cocoa objective-c root

我试图使用BetterAuthorizationSample而不是使用setuid所谓的"恶意"方式来获得root权限.

目前我正在使用AuthorizationCreate(); 使用BLAuthentication以root用户访问更改某些文件,但我有点恼火的是,每次应用程序启动时我都必须不断输入密码.

所以我遇到了Apple的HelperTool方法,我无法理解.

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

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

小智 2

在 Mac OS X 上创建辅助工具的“现代”方法是将其作为应用程序的一部分提供,并使用ServiceManagement框架来部署它。您的用户在部署该工具时输入一次密码。这将其安装为一项launchd工作;从那时起,您可以使用任何 launchd 按需机制来启动帮助程序并让它为您工作。

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

该帖子中的示例代码位于 GitHub 上,并演示了如何ServiceManagement部署帮助程序工具和授权服务来控制对其的访问。

  • 我想我应该插话并指出,如果您对主应用程序进行沙箱处理,那么这些都不起作用。SMJobBless() 将失败。上次我从 Quinn 那里听说,他正在开发一个更新的示例,该示例适合希望在 App Store 之外发布沙盒应用程序但仍然能够执行此类功能的开发人员。 (2认同)