Sandbox en Mac OS X

1

No puedo usar el comando sandbox-exec como esperaba.

El problema es que no puedo aplicar un perfil personalizado con el modificador -f: obtengo el error "operación no permitida" que no pude rastrear a nada útil cuando busqué una solución en línea.

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

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

Sin embargo, es posible ejecutar perfiles predefinidos con el modificador -n. El siguiente ejemplo se ejecuta con éxito (inicia Alfred y no permite que el proceso acceda a la red).

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

Respuestas:

1

¿Cuáles son los contenidos de alfred-profile.sb? Creo que ha denegado / no ha permitido explícitamente una operación que se requiere para que la aplicación se inicie. Comprobaría eso primero, si es posible.

Considere dos perfiles:

  1. Un perfil permisivo good_profile.sb:

    (version 1)
    (allow default)
    
  2. Un perfil restrictivo bad_profile.sb:

    (version 1)
    (deny default)
    

Nota: un perfil que solo consista (version 1)mostrará el mismo comportamiento, ya que negar es el comportamiento predeterminado del sandbox.

Ahora, cuando ejecuto el perfil permisivo en mi máquina, obtengo:

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

Pero cuando ejecuto el perfil restringido obtengo:

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

En ambos casos, se cargó el perfil, pero en el segundo caso se le negaron los permisos necesarios para ejecutar el proceso y, por lo tanto, nunca se inició.

Pruebas
fuente
Gracias @Testing! Mi alfred-profile.sb era realmente demasiado restrictivo.
Dex