objective-c – 使用提升的权限OS X 10.7和10.8运行进程

objective-c – 使用提升的权限OS X 10.7和10.8运行进程,第1张

概述我正在尝试使用提升的权限运行进程 – 特别是OpenVPN,它需要root权限才能将路由添加到系统. 环顾四周现有的示例引导我使用AuthorizationExecuteWithPrivileges,现在似乎已弃用. 我尝试了新的SMJobBless方法,但我有一些关于它的可行性的问题.据我所知,我可以创建一个单独的特权工具,并通过套接字与它通信,要求工具执行特权命令.但是,我似乎无法弄清楚如何启 我正在尝试使用提升的权限运行进程 – 特别是OpenVPN,它需要root权限才能将路由添加到系统.

环顾四周现有的示例引导我使用AuthorizationExecuteWithPrivileges,现在似乎已弃用.

我尝试了新的SMJobBless方法,但我有一些关于它的可行性的问题.据我所知,我可以创建一个单独的特权工具,并通过套接字与它通信,要求工具执行特权命令.但是,我似乎无法弄清楚如何启动OpenVPN进程并以这种方式实时捕获其标准输出,因为主应用程序本身不会启动进程.

另一种选择是在OpenVPN可执行文件上使用setuID.我可以使用SMJobBless安装的帮助程序来设置可执行文件的文件权限和setuID,然后通过NSTask正常运行吗?

编辑:

最后是否有一些方法只需运行一个具有权限的命令而无需永久安装任何东西?虽然这种新方法更安全,但看起来非常沉重.

@R_301_6120@ 我设法通过使用帮助程序并与xpc( Nathan de Vries’s Blog上显示的方法)进行通信来使用SMJobBless方法.使用此帮助程序,我将外部进程的权限设置为04555(setuID,rx).然后删除SMJob,因为不再需要它.基本上模仿“一次性”特权工作.

接下来,我能够使用NSTask启动进程并在我的主应用程序中捕获其输出.

另外,我在开始时检查是否在可执行文件上设置了权限,如果没有,则重新祝福SMJob帮助程序并设置权限.

如果有人有更清洁的解决方案,请随时分享.谢谢!

总结

以上是内存溢出为你收集整理的objective-c – 使用提升的权限OS X 10.7和10.8运行进程全部内容,希望文章能够帮你解决objective-c – 使用提升的权限OS X 10.7和10.8运行进程所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存