4 votos

¿Bloquear el acceso de lectura/escritura de una aplicación a un archivo específico en OS X?

La premisa es la siguiente:

Tengo una aplicación que se ha configurado en su código para que sólo funcione en las versiones de OS X 10.4 a 10.9.2. (Cuando intento instalarla, da un mensaje "Esta versión de ____ es para Mac OS X 10.4 a 10.9.2"). He actualizado a 10.9.3, y el desarrollador sólo tiene que actualizar la aplicación para solucionar esta restricción en su herramienta.

De hecho, estoy en contacto con el desarrollador, que dice que está "demasiado ocupado" para trabajar en la aplicación o emitir una actualización en este momento.

He descubierto que la aplicación sólo lee /System/Library/CoreServices/SystemVersion.plist para determinar la versión del sistema operativo, y me las arreglé para eludir su restricción del instalador editando temporalmente el archivo usando este guía. Pero después de revertir los valores del plist a 10.9.3 y reiniciar el sistema para empezar a utilizar (con suerte) la aplicación, vi que incluso comprueba SystemVersion.plist hasta ejecute y no sólo durante la instalación.

Me preocupa que si sigo SystemVersion.plist en 10.9.2 indefinidamente arruinaría otras partes del sistema como las actualizaciones de la App Store y similares.

Así que mi idea ahora, es tratar de encontrar algún método o herramienta, para bloquear la aplicación de ser capaz de incluso leer SystemVersion.plist completamente - piense en ello como una versión de "sistema de archivos" de Pequeño soplón si se quiere - sólo una forma de crear reglas personalizadas, para procesos específicos, que no permitan el acceso de lectura y/o escritura, a archivos/carpetas específicas en el sistema.

Tal vez sólo causaría que la aplicación arroje un error y no se ejecute en absoluto (probablemente podría probar esto moviendo temporalmente el archivo plist a la Papelera durante sólo 30 segundos mientras se intenta instalar/ejecutar) - pero en cualquier caso, creo que es un realmente útil para poder tener, con fines de seguridad de gran alcance - al igual que el acceso a la red de bloqueo personalizado para las aplicaciones en Pequeño soplón .

Entonces, ¿hay alguna herramienta impresionante de terceros, o incluso una herramienta nativa de OS X / Xcode, que pueda hacer esto? ¿Alguna idea de lo que tendría que pasar de todos modos, sistema / programación-sabio? Ajustar con 'Compartir y Persimons' para un archivo en el Finder me permite controlar usuario acceder, pero no procesar.

6voto

Jose Chavez Puntos 645

Puedes utilizar las funciones de sandboxing integradas en Mac OS X.

Cree un perfil personalizado que limite el acceso al archivo SystemVersion.plist, utilizando una sintaxis como la siguiente

(version 1)
(deny file* (literal "/System/Library/CoreServices/SystemVersion.plist"))
(allow default)

Guárdalo como, por ejemplo, ~/myprofile.sb y luego ejecuta tu programa así:

sandbox-exec -f ~/myprofile.sb "/Application/My Program.app/Contents/MacOS/My Program"

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