启动守护程序是读取/写入Cocoa中特权文件的最佳途径吗?
我有一个应用程序,它需要能够写入任何用户/当前主机首选项文件(每个首选项实用程序引用需要管理员权限),还需要通过其plist启用/禁用启动代理(只能由root用户写入) 我使用启动守护程序是读取/写入Cocoa中特权文件的最佳途径吗?,cocoa,daemon,privileges,launchd,Cocoa,Daemon,Privileges,Launchd,我有一个应用程序,它需要能够写入任何用户/当前主机首选项文件(每个首选项实用程序引用需要管理员权限),还需要通过其plist启用/禁用启动代理(只能由root用户写入) 我使用SFAuthorizationView要求用户在更改这些值之前以管理员身份进行身份验证 我正试图决定对这些值进行实际更改的最佳方法 廉价的黑客选项似乎是使用authorization executewithprivileges()和mv或默认值,或者通过blaauthentication或者自己创建类似的东西。这样做的缺点
SFAuthorizationView
要求用户在更改这些值之前以管理员身份进行身份验证
我正试图决定对这些值进行实际更改的最佳方法
廉价的黑客选项似乎是使用authorization executewithprivileges()
和mv
或默认值
,或者通过blaauthentication或者自己创建类似的东西。这样做的缺点是无法获得我正在执行的任何命令行应用程序的返回值,以及我遇到的一些奇怪的深奥错误(例如在某些情况下获得-60008错误)。显然,苹果强烈反对这种做法,但人们似乎确实这样做了,并取得了一些成功
第二个最粗俗的选项似乎是使用suid位设置和--self-repair
选项创建一个助手应用程序,正如在各个地方讨论的那样。这似乎是可能的,但它可能不会比第三种选择少多少麻烦
第三个选项是创建一个成熟的launchd
守护进程,它将以root用户身份运行,并通过套接字与我的应用程序通信。读写一些plist文件似乎有点过火,但我也可能会发现它的其他用途,而且它不会是我的应用程序的唯一守护进程,因此只添加另一个也不是不合理的
我正在考虑为我的目的修改这个
我的两个问题是:
launchd
绝对是最好、最安全的方法:你需要一个安装程序包来安装你的助手。一定要确保你的助手除了编辑你想要的目标文件之外,什么都不做,什么都不能做还有API,它允许您打开需要root权限的文件。感谢您提供有关限制帮助程序范围的建议。安装包不会是一个问题,因为我需要一个不管。