1 votos

¿Cómo dar acceso a una carpeta específica o a todo el disco a /bin/bash cuando se ejecuta en un paquete de aplicaciones en Catalina?

Estoy tratando de obtener un paquete de aplicaciones que envuelve un shell script que invoca /bin/bash para poder leer un archivo plist en ~/Library/Mail/V7/MailData/Signatures y para escribir en otros archivos de ese directorio. Cuando la aplicación se ejecuta y trata de hacer cualquiera de las dos acciones, falla con un error de permiso (sólo se ve en la consola)

He confirmado que funciona correctamente cuando /bin/bash se le ha dado acceso total al disco manualmente en las preferencias de Seguridad y Privacidad, pero es demasiado engorroso indicar a los usuarios cómo hacerlo. He intentado añadir mi aplicación como la que tiene permisos de disco completos, pero no funciona

No he podido encontrar una manera de forzar a MacOS a pedir al usuario que dé estos permisos y basándome en la salida de depuración de TCC (usando /usr/bin/log stream --debug --predicate 'subsystem == "com.apple.TCC"' ), parece que eso nunca es posible, que MacOS dice activamente que no se puede pedir el acceso completo al disco.

0voto

Jose Chavez Puntos 645

Una forma de evitar el problema es simplemente no invocar /bin/bash sino que interpreta y ejecuta el shell script dentro de su propia aplicación. Por ejemplo, podrías restringir el lenguaje script a uno muy simple, de modo que no tengas que implementar la funcionalidad completa de los scripts de bash (lo que sería una gran tarea).

Por ejemplo, si los scripts sólo consisten en ejecutar comandos literales, o tal vez algunas condiciones - entonces eso podría ser fácilmente implementado directamente en la aplicación, o como un simple intérprete de lenguaje.

Esto permitiría al usuario dar a su aplicación acceso total al disco, y funcionaría.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X