Песочница дочерних процессов: почему сценарий отличается от приложения? - PullRequest
0 голосов
/ 05 октября 2019

Мое приложение находится в изолированной программной среде (и не может открыть или записать какой-либо файл). Мне было любопытно, что случилось с дочерними процессами. Я заставил мое приложение выполнить скрипт bash (который просто записывает в файл). Поведение было ожидаемым: сценарий, запущенный моим изолированным приложением, тоже был изолированным.

Однако, когда я попытался запустить в моем приложении другое (не мое) приложение, дочернее приложение не оказалось изолированным. Мне было интересно, что отличалось?

Я запускаю свой скрипт с

[task setLaunchPath: @"/bin/bash"];
[task setArguments:@[@"path/to/script.sh"]];
[task launch];

, а мое приложение с

[task setLaunchPath: @"/usr/bin/open"];
[task setArguments:@[@"-a", @"/Applications/some.app"]];
[task launch];

(такая же проблема возникает при запуске приложения с[[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/some.app"];)

Примечание: я не контролирую some.app, это может быть любое приложение. Я тоже прочитал документ от Apple , но понимаю, что он работает только в том случае, если у нас тоже есть приложение. 1016 *

1 Ответ

0 голосов
/ 05 октября 2019

Ссылка, которую вы указали, применима только к процессам, которые ваше приложение запускает через NSTask или функцию posix-spawn: инструменты командной строки и сценарии и тому подобное. Когда вы просите свое приложение запустить полное, независимое приложение, оно будет иметь свою собственную изолированную программную среду и права и будет управляться протоколами безопасности, которые система обычно применяет к приложениям: например, пользователь должен будет одобрить его запуск,и он будет ограничен своими собственными правами.

Независимому приложению не нужно наследовать изолированную программную среду вашего приложения, поскольку оно имеет свою собственную. Фактически, разрешение на наследование изолированной программной среды вашего приложения может представлять собой угрозу безопасности само по себе, поскольку кто-то недобросовестный может использовать этот трюк, чтобы расширить права приложения за пределы того, что изначально имело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...