如何以编程的方式用root权限创建一个NSTask进程

a308253767 2018-09-19 11:17:53
最近正在做openvpn相关的项目,花了好多天,终于解决了NSTask 运行后出现 launch path not accessible 的错误。可以查看我的另一个贴子 https://bbs.csdn.net/topics/392448413

但这个问题解决后,按下葫芦起了瓢,又出现了另一个错误:

2018-09-19 10:24:13.973265+0800 WdSpeedProj[4504:149947] got
Wed Sep 19 10:24:13 2018 WARNING: Using --management on a TCP port WITHOUT passwords is STRONGLY discouraged and considered insecure
Wed Sep 19 10:24:13 2018 WARNING: file 'user.txt' is group or others accessible
Wed Sep 19 10:24:13 2018 OpenVPN 2.4.6 x86_64-apple-darwin [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [MH/RECVDA] [AEAD] built on Aug 15 2018
Wed Sep 19 10:24:13 2018 library versions: OpenSSL 1.0.2o 27 Mar 2018, LZO 2.10
Wed Sep 19 10:24:13 2018 MANAGEMENT: Socket bind failed on local address [AF_INET]127.0.0.1:25340: Operation not permitted (errno=1)
Wed Sep 19 10:24:13 2018 Exiting due to fatal error


因为openvpn会绑定本地的一个端口,在绑定这个端口时,因为没权限,被拒绝。
Wed Sep 19 10:24:13 2018 MANAGEMENT: Socket bind failed on local address [AF_INET]127.0.0.1:25340: Operation not permitted (errno=1)


这个问题,我曾在终端运行openvpn的命令行遇到过,解决的方法很简单,就是在终端中以su root 权限运行。
在控制台中,也可以在edit Scheme 勾选 Debug Process As root来解决。但是如果在带界面的cocoa程序中勾选 Debug Process As Root后,程序一打开就会崩溃。

所以现在的问题就是,如何用代码来实现用root权限来创建一个NSTask进程。
我试过seteuid,setuid,但似乎没有效果?希望有人来解答。
...全文
506 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxap 2018-09-19
  • 打赏
  • 举报
回复
chmod 771 你的运行文件

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧