Es un demonio launchd la mejor ruta para ir para la lectura / escritura de archivos privilegiados en Cocoa?

StackOverflow https://stackoverflow.com/questions/1121253

Pregunta

Tengo una aplicación que necesita para ser capaz de escribir en cualquier archivo de preferencias del usuario / anfitrión actuales (que requiere privilegios de administrador por Preferencias Referencia de utilidades) y también para activar / desactivar un agente launchd a través de su plist (escribible por root) .

Estoy usando SFAuthorizationView a exigir a los usuarios autenticarse como administrador antes de modificar estos valores.

Estoy tratando de decidir sobre la mejor manera de hacer la alteración real de estos valores.

La opción hacker barato parece ser el uso de AuthorizationExecuteWithPrivileges() y mv o defaults, ya sea a través BLAuthentication o crear algo similar a mí mismo. La desventaja de esto no está recibiendo el valor de retorno de cualquier aplicación de línea de comandos que estoy ejecutando, además de algunos errores esotéricos impares que he encontrado (como obtener un error de -60.008 en ciertas situaciones). Es especialmente recomendable en contra por parte de Apple, obviamente, pero la gente no parece hacerlo y tener algo de éxito con él.

La segunda opción más hacker parece ser el conjunto crear una aplicación de ayuda con el bit SUID establecido y la opción --self-repair como se discute en varios lugares. Esto parece posible, pero como que no es probablemente mucho menos problemas que la tercera opción.

La tercera opción es crear un demonio launchd en toda regla que se desarrollará como root y comunicarse con mi solicitud a través de una toma de corriente. Esto parece un poco excesivo para leer y escribir algunos archivos plist, pero también es posible que pueda encontrar otros usos para él en el camino, y que no será el único demonio para mi aplicación, por lo que no parece razonable solo añadir otro.

Estoy pensando acerca de cómo modificar esta para mis propósitos.

Mi dos preguntas son:

  1. ¿Tiene la opción launchd demonio parece el mejor camino a seguir para esto, o hay una ruta mucho más fácil que me falta?

  2. tiene a nadie más utilizado con éxito ese código como base para algo similar, y ¿alguien detecta algún problema con evidentes que me falta? Lo he utilizado con éxito en una aplicación de prueba, pero sería curioso que escuchar la opinión chicos en él.

¿Fue útil?

Solución

  1. launchd es sin duda la mejor y más seguro camino a seguir: necesitará un paquete de instalación para obtener su ayudante en su lugar. No estar seguro de que su ayudante hace y puede hacer absolutamente nada más que editar los archivos que desea orientar la campaña.

  2. Sin experiencia w / el código, pero se basa fuera de BetterAuthorizationSample, así que es un buen comienzo.

Otros consejos

También está el openauth API, que le permite abrir archivos que requieren privilegios de root.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top