cocoa - 仅显示一次密码提示 - 如何?

标签 cocoa security permissions authorizationservices

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

目标: 应用程序要求用户输入密码一次,以后的应用程序不会提示输入密码。

下一个最佳: 应用程序在应用程序启动时要求用户输入密码一次,之后的应用程序不会提示输入密码,直到应用程序重新启动。

我知道授权服务和创建专门处理特权文件修改守护进程的可能性,我好奇的是我列出的目标在潜水之前是否甚至可能实现太深入另一个系统了。

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

干杯, 达斯汀

最佳答案

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

要部署特权帮助程序工具,您应该使用服务管理框架,特别是 SMJobBless(),它会在将帮助程序部署为启动作业。然后主应用程序可以根据需要启动您的助手。

如果您想澄清答案中的任何步骤,请随时询问,但是我已经在我的书中写了有关特权分离的两个方面的内容 Professional Cocoa Application Security所以请随意购买一两本;-)。

关于cocoa - 仅显示一次密码提示 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3979235/

相关文章:

objective-c - CGDisplayIOServicePort 在 OS X >= 10.9 中被弃用,如何替换?

java - 从命令行在 Java WAR 上下文中运行代码

php - 如何在当前目录之外创建目录?

java - shutdownHooks RuntimePermission 的作用是什么?

objective-c - NSMutableDictionary 不会追加

objective-c - Cocoa Touch - 向 Xbox 360 好友发送消息

macos - 如何检查窗口是否相交?

iphone - iOS 应用程序安全的最佳实践

python - 如何制作基于 web 的 python 交互式 shell

php - 允许 php 写入日志文件