我正在尝试使用 BetterAuthorizationSample,而不是采用所谓的“恶意”方式使用 setuid 来获取 root 权限。
目前我正在使用 AuthorizationCreate();使用 BLAuthentication 获得 root 访问权限来更改某些文件,但我对每次启动应用程序时都必须不断输入密码这一事实感到有点恼火。
所以我遇到了Apple的HelperTool方法,但我就是不明白。
我已经使用 Cocoa 工作了几个月了,但这超出了我的能力范围,但我仍然需要它。我如何实现这个工具来执行简单的 root 权限任务?
是否有更简单的方法来使用 HelperTool 的概念,以便我的用户只需输入一次密码,就可以永远授予 root 权限?
在 Mac OS X 上创建辅助工具的“现代”方法是将其作为应用程序的一部分提供,并且use the ServiceManagement部署它的框架 http://blog.ideveloper.tv/designing-writing-and-deploying-a-privileged-helper-on-mac-os-x/。您的用户在部署该工具时输入一次密码。这会将其安装为launchd
工作;从那时起你使用任何启动的按需机制 http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html%23//apple_ref/doc/man/5/launchd.plist启动助手并让它为您工作。
请注意,上面链接的博客文章建议您使用以下命令来保护助手的后续调用:授权服务 https://developer.apple.com/library/mac/#documentation/security/conceptual/authorization_concepts/01introduction/introduction.html升级,以避免任何人都可以使用的任意权限升级。这似乎在某种程度上影响了“用户只需输入密码一次”的好处,尽管您可以使用AuthorizationRightSet() https://developer.apple.com/library/mac/#documentation/security/conceptual/authorization_concepts/01introduction/introduction.html在策略数据库中创建应用程序的授权令牌,以便您实际上可以定义用户是否需要在首次部署时提供密码。
该帖子的示例代码是在 GitHub 上 https://github.com/iamleeg/LogViewer,并演示使用ServiceManagement
部署帮助工具和授权服务来控制对其的访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)