gpt4 book ai didi

cocoa - launchd 守护进程是在 Cocoa 中读取/写入特权文件的最佳途径吗?

转载 作者:行者123 更新时间:2023-12-03 17:08:26 26 4
gpt4 key购买 nike

我有一个应用程序,需要能够写入任何用户/当前主机首选项文件(这需要每个首选项实用程序引用的管理员权限),还需要通过其 plist 启用/禁用 launchd 代理(只能由 root 写入) 。

我使用 SFAuthorizationView 要求用户在更改这些值之前以管理员身份进行身份验证。

我正在尝试确定实际更改这些值的最佳方法。

廉价的 hackish 选项似乎是使用 AuthorizationExecuteWithPrivileges()mvdefaults,通过 BLAuthentication 或我自己创建类似的东西。这样做的缺点是无法获得我正在执行的任何命令行应用程序的返回值,加上我遇到的一些奇怪的深奥错误(例如在某些情况下出现 -60008 错误)。显然,苹果强烈建议不要这样做,但人们似乎确实这样做了,并且取得了一些成功。

第二个最黑客的选项似乎是整个创建一个带有 suid 位设置和 --self-repair 选项的帮助应用程序,正如在各个地方讨论的那样。这似乎是可能的,但它的麻烦可能并不比第三种选择少多少。

第三个选项是创建一个成熟的 launchd 守护进程,它将以 root 身份运行并通过套接字与我的应用程序通信。对于读取和写入一些 plist 文件来说,这似乎有点矫枉过正,但我​​也有可能在未来找到它的其他用途,而且它不会是我的应用程序的唯一守护进程,所以仅仅使用它似乎并不是不合理的添加另一个。

我正在考虑修改此sample code为了我的目的。

我的两个问题是:

  1. launchd 守护进程选项似乎是实现此目的的最佳途径,还是我缺少更简单的途径?

  2. 是否有其他人成功地使用该代码作为类似代码的基础,是否有人发现我遗漏的任何明显问题?我已经在测试应用程序中成功使用了它,但我很想听听你们对此的看法。

最佳答案

  1. launchd 绝对是最好、最安全的方法:您需要一个安装程序包来安装您的助手。请确保您的助手除了编辑您想要定位的文件之外,绝对不能做任何事情。

  2. 没有代码经验,但它基于 BetterAuthorizationSample,所以这是一个很好的开始。

关于cocoa - launchd 守护进程是在 Cocoa 中读取/写入特权文件的最佳途径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com