Я не могу использовать команду 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
Каково содержание alfred-profile.sb
? Я думаю, что вы запретили/не разрешили явно операцию, необходимую для запуска приложения. Я бы проверил это в первую очередь, если это возможно.
Рассмотрим два профиля:
Разрешающий профиль, good_profile.sb
:
(version 1)
(allow default)
Ограничительный профиль, 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
В обоих случаях профиль был загружен, но во втором случае процессу было отказано в разрешениях, необходимых для запуска, и поэтому он никогда не запускался.
Декс