2012-02-13 4 views
4

Я песочница включен и использовать /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 'failed: 22, «Недопустимый аргумент». Прекращение временного процесса. * В то же время песочница журналы: отрицать запрещенной Exec-sugid

Почему это работает с пинг, но не с трассировку? И как мне заставить его работать с traceroute?

Thx!

ответ

4

Q1: ping vs. traceroute - первая является непривилегированной программой, последняя является привилегированной и работает как корень. Ваша ошибка указывает на то, что запущен, поскольку root не разрешен песочницей, неудивительно.

Q2: напишите отчет об ошибке с Apple, в котором подробно описывается, почему вам нужна функция traceroute, и попросите поддерживать изолированную песочницу. Учитывая, что вы на самом деле используете песочницу, вы, вероятно, зарегистрированный разработчик Apple, поэтому поднимите его и на форумах разработчиков (укажите свой номер ошибки).

+0

К сожалению, у меня пока нет учетной записи разработчика. Означает ли это, что другого пути нет? – Daniel

+1

@ Даниэль - возможно, нет, по крайней мере, не используя traceroute. Но переключение собственного «traceroute» напрямую может быть прекрасным, с простым правом вы можете делать что-либо по сети, которая вам нравится, когда в песочнице. Что вызывает вопрос о том, что делает traceroute, чтобы он выполнялся как root? Вы можете получить источник traceroute (google traceoute.c), взглянуть на него и посмотреть, можно ли его запустить как обычного пользователя - вы всегда можете включить его в свое приложение в качестве помощника, если это так, или объединить код напрямую в исходную базу. – CRD

+0

Хорошая идея. Я попытаюсь включить его прямо в исходную базу. Спасибо! – Daniel