获取管理员权限以使用来自Cocoa应用程序的rm删除文件

获取管理员权限以使用来自Cocoa应用程序的rm删除文件,第1张

概述我正在制作一个删除日志文件的小应用程序.我正在使用运行rm和srm(secure rm)的NSTask实例来删除文件. 我希望能够删除以下文件: > / Library / Logs >〜/ Library / Logs 问题是用户帐户无权访问系统库文件夹中的某些文件,例如Adobe日志子文件夹和其他文件.例如,只有“system”用户(组?)对Adobe logs文件夹及其内容具有r / w权限 我正在制作一个删除日志文件的小应用程序.我正在使用运行rm和srm(secure rm)的NSTask实例来删除文件.

我希望能够删除以下文件:

> / library / Logs
>〜/ library / Logs

问题是用户帐户无权访问系统库文件夹中的某些文件,例如Adobe日志子文件夹和其他文件.例如,只有“system”用户(组?)对Adobe logs文件夹及其内容具有r / w权限,并且当前用户甚至没有在文件夹的“获取信息”窗口中显示的权限中的条目.

我希望能够完全做到:

>获取管理员权限.
>将密码存储在钥匙串中,这样每次应用程序都不必唠叨用户(密码存储是个坏主意吗?可能吗?)
>删除文件权限的文件.

我正在使用NSTask,因为它提供任务完成通知,从任务本身获取文本输出等.我是否需要使用其他东西?如果是这样,在运行具有管理员权限的rm和srm时,如何复制NSTask的完成通知和输出文件句柄?

我正在寻找最安全的方式来处理这种情况.即我不希望我的应用程序成为特权升级攻击的门户.

我查看了授权服务编程指南,但我不确定哪种情况适合.起初我认为AuthorizationExecuteWithPrivileges是一个好主意,但在阅读了更多有关该主题的内容后,出于安全原因,不建议使用此方法.

非常欢迎详细的答案.我相信你们中的一些人已经不得不做类似的事情并且有一些代码和知识可以分享.

提前致谢!

更新:

我现在能够d出身份验证对话框并获取权限,如下所示:

Osstatus status;AuthorizationRef authref;    status = AuthorizationCreate(NulL,kAuthorizationEmptyEnvironment,kAuthorizationFlagDefaults,&authref);AuthorizationRights authRights;AuthorizationItem authItems[1];authItems[0].name = kAuthorizationRightExecute;authRights.count = sizeof(authItems) / sizeof(authItems[0]);authRights.items = authItems;AuthorizationFlags authFlags = kAuthorizationFlagDefaults | kAuthorizationFlagExtendRights | kAuthorizationFlagInteractionAllowed;status = AuthorizationcopyRights(authref,&authRights,authFlags,NulL);

从它的外观来看,似乎“Factored Application”方法看起来最合适.问题是,对我而言,rm似乎已经成为一个外部辅助工具了.我不确定我是否获得了文档中建议的setuID替代方案.我可以在rm上设置setuID位并使用我已实现的NSTask方法运行它吗?这意味着我不需要创建自己的帮助工具.有人可以详细说明这个问题吗?

我还查看了BetterauthorizationSample,它被建议作为setuID位方法的一种更安全和最新的替代方法,但发现它非常复杂,例如简单的行为.任何提示?

在此先感谢您的帮助!

解决方法 几个月前我头疼了.我试图让一个运行管理员权限的shell脚本在某个时间关闭我的计算机.我感觉到你的痛苦.

我使用了BetterauthorizationSample,这是一个彻底的噩梦.但我采取了最实用的路线 – 我没有费心去理解正在发生的一切,我只是抓住了代码的内涵.

让我按照自己的意愿行事并没有花那么长时间.我不记得我改变了什么,但欢迎你查看我的代码:

http://github.com/johngallagher/TurnItOff

我希望这有助于您寻求安全的应用程序!

总结

以上是内存溢出为你收集整理的获取管理员权限以使用来自Cocoa应用程序的rm删除文件全部内容,希望文章能够帮你解决获取管理员权限以使用来自Cocoa应用程序的rm删除文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1024209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存