Я песочница включен и использовать /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!
К сожалению, у меня пока нет учетной записи разработчика. Означает ли это, что другого пути нет? – Daniel
@ Даниэль - возможно, нет, по крайней мере, не используя traceroute. Но переключение собственного «traceroute» напрямую может быть прекрасным, с простым правом вы можете делать что-либо по сети, которая вам нравится, когда в песочнице. Что вызывает вопрос о том, что делает traceroute, чтобы он выполнялся как root? Вы можете получить источник traceroute (google traceoute.c), взглянуть на него и посмотреть, можно ли его запустить как обычного пользователя - вы всегда можете включить его в свое приложение в качестве помощника, если это так, или объединить код напрямую в исходную базу. – CRD
Хорошая идея. Я попытаюсь включить его прямо в исходную базу. Спасибо! – Daniel