Можно ли выполнить двоичный файл, расположенный внутри контейнера песочницы приложения macOS? - PullRequest
0 голосов
/ 01 июля 2018

Возможно ли выполнить двоичный файл, расположенный внутри контейнера песочницы приложения macOS?

В качестве теста я попытался использовать Process() для запуска двоичного файла PHP. Это прекрасно работает при запуске PHP, найденного на usr/bin/php, но если я скопирую его в контейнер песочницы приложения, он не запустится. Ошибка launch path not accessible.

Шаги, чтобы продемонстрировать проблему:

  1. Поместите это в голое изолированное приложение ViewController:

    let path = "/usr/bin/php"
    
    let process = Process()
    process.launchPath = path
    process.arguments = ["-v"]
    process.launch()
    
  2. Результат в консоли:

    PHP 7.1.16 (cli) (built: Apr  1 2018 13:14:42) ( NTS )
    
  3. Измените путь в приведенном выше коде на:

    let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
    let path = documentsURL.absoluteString + "php"
    print(path)
    
  4. Правильный путь выводится на консоль:

file:///Users/myuser/Library/Containers/com.domain.SandboxedApp/Data/Documents/php

  1. Скопируйте бинарный файл PHP в контейнер:

    $ cp /usr/bin/php /Users/myuser/Library/Containers/com.domain.SandboxedApp/Data/Documents
    
  2. Получившаяся ошибка в консоли:

2018-07-01 20:08:30.630442+1200 SandboxedApp[43579:20898286] Failed to set (contentViewController) user defined inspected property on (NSWindow): launch path not accessible

Почему Process() не запускает PHP из контейнера? И почему такое странное сообщение об ошибке?

(nb вы могли бы спросить, почему я хотел бы сделать это. Есть несколько причин, например, я хотел бы глубже понять, как работают разрешения для песочницы; я хотел бы поместить в песочницу приложение, которое может запускать пользователя поставляемые двоичные файлы, не предоставляемые macOS и не распространяемые в комплекте приложения - да, не предназначенные для распространения на MAS, я знаю, что это нарушает их условия).

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