2

我正在构建一个 Cocoa 应用程序,它修改用户操作系统上需要管理员权限的文件。我有一个概念验证工作,它使用authopen但它没有提供我希望实现的 UX 体验。每次修改文件时,它都会提示用户输入密码。有没有办法在其生命周期内授予应用程序权限?

目标: 应用程序要求用户输入密码一次出去的应用程序不提示输入密码。

Next Best: 应用程序在应用程序启动时询问用户一次密码,在应用程序重新启动之前,应用程序不会提示输入密码。

我知道授权服务和创建一个专门处理修改特权文件的守护程序的可能性,我很好奇的是,在深入研究另一个系统之前,我列出的任何一个目标是否可能实现。

非常感谢任何建议、批评或有用的链接。

干杯,达斯汀

4

1 回答 1

2

是的,使用授权服务是前进的方向。您通过 AuthorizationCopyRights() 在您的应用程序中获得一个 AuthorizationRef(如果需要,它会显示 UI),并将其传递给您的助手(通过将其打包到外部表单中),该助手在执行特权任务之前验证它是否确实获得了必要的权利. Authorization Services 能够在/etc/authorization数据库中注册权限,因此如果您选择自定义权限,您可以选择允许谁获取权限、存在什么超时或其他条件等的默认设置。

要部署您的特权助手工具,您应该使用服务管理框架,特别是SMJobBless()在将助手部署为launchd作业之前验证您的客户端和助手上的代码签名身份是否匹配。然后您的助手可以由主应用程序按需启动。

随意询问您是否想澄清答案中的任何步骤,但是我已经在我的“专业 Cocoa 应用程序安全”一书中写了关于特权分离的这两个方面的内容,所以请随意购买一两本;-)。

于 2010-10-20T15:08:24.403 回答