Песочница в Mac OS X

Я не могу использовать команду sandbox-exec, как я ожидал.

Проблема в том, что я не могу применить пользовательский профиль с ключом -f: я получаю сообщение об ошибке «Операция не разрешена», которую я не смог отследить ни к чему полезному, когда искал решение в Интернете.

$ sandbox-exec -f alfred-profile.sb /Applications/Alfred.app/Contents/MacOS/Alfred

sandbox-exec: /Applications/Alfred.app/Contents/MacOS/Alfred: Operation not permitted

Однако можно запускать предопределенные профили с ключом -n. Следующий пример выполняется успешно (запускает Alfred и не позволяет процессу получить доступ к сети).

$ sandbox-exec -n no-network /Applications/Alfred.app/Contents/MacOS/Alfred

Ответы (1)

Каково содержание alfred-profile.sb? Я думаю, что вы запретили/не разрешили явно операцию, необходимую для запуска приложения. Я бы проверил это в первую очередь, если это возможно.

Рассмотрим два профиля:

  1. Разрешающий профиль, good_profile.sb:

    (version 1)
    (allow default)
    
  2. Ограничительный профиль, bad_profile.sb:

    (version 1)
    (deny default)
    

Примечание. Профиль, состоящий только из , (version 1)будет отображать такое же поведение, так как по умолчанию в песочнице используется deny.

Теперь, когда я запускаю разрешающий профиль на своей машине, я получаю:

sandbox-exec -f good_profile.sb /sbin/ping www.google.com
PING www.google.com (216.58.194.196): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
^C
--- www.google.com ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss

Но когда я запускаю ограниченный профиль, я получаю:

sandbox-exec -f bad_profile.sb /sbin/ping www.google.com
sandbox-exec: /sbin/ping: Operation not permitted

В обоих случаях профиль был загружен, но во втором случае процессу было отказано в разрешениях, необходимых для запуска, и поэтому он никогда не запускался.

Спасибо @Testing! Мой alfred-profile.sb действительно был слишком ограничительным.