沙箱NSTask
问题描述:
我已经启用沙盒,并使用/sbin目录/平与NSTask:沙箱NSTask
[task setLaunchPath:@"/sbin/ping"];
[task setArguments:[NSArray arrayWithObjects:@"-c10", iPAddress, nil]];
一切都很正常,我得到预期的输出。
我也想用/usr/sbin目录/路由跟踪与NSTask:
[task setLaunchPath:@"/usr/sbin/traceroute"];
[task setArguments:[NSArray arrayWithObject:iPAddress]];
但是任务与消息终止: NSTask:任务创建路径“/ usr/sbin目录/ traceroute'失败:22,“无效参数”。终止临时过程。 * 同时沙箱日志:否认禁止-EXEC-sugid
为什么它与平工作,但不能与的traceroute?我如何使它与traceroute一起工作?
Thx!
答
Q1:ping与traceroute - 前者是非特权程序,后者是priviledged并以root身份运行。您的错误表明以沙盒不允许root身份运行,这并不令人惊讶。问题2:通过Apple提供一份bug报告,详细说明您为什么需要traceroute功能并要求支持沙盒支持。考虑到你实际使用的是沙箱,你可能是一个注册的苹果开发者,所以在开发论坛上也要提及它(列出你的bug数)。
不幸的是,我还没有开发人员帐户。这是否意味着没有其他办法? – Daniel 2012-02-14 01:42:40
@Daniel - 可能不是,至少不使用traceroute。但直接滚动您自己的“traceroute”可能没问题,只需简单的授权,您可以在沙盒中通过您喜欢的网络执行任何操作。哪一个问题是traceroute这样做需要它以root身份运行?你可以得到traceroute(google traceoute.c)的源代码,看看它是否可以像普通用户一样运行它 - 如果是的话,你可以随时将它作为帮助程序包含在你的应用程序中,或者直接合并代码进入你的源代码库。 – CRD 2012-02-14 10:47:34
好主意。我会尽力将其直接包含在我的源代码库中。谢谢! – Daniel 2012-02-14 12:09:59