7

Estoy trabajando en algo que necesita instalar archivos periódicamente en una carpeta en/Library.Obteniendo acceso de raíz w/Elevated Helper y SMJobBless

Entiendo que en el pasado podría haber usado uno de los métodos de autenticación, pero que desde entonces han sido obsoletos en 10.7.

Lo que he entendido de mi lectura hasta el momento:

debería crear un ayudante que de alguna manera se autentica y tienen que hacer ayudante de todas las tareas de movimiento. He echado un vistazo a algunos de los códigos de muestra, incluidos algunos relacionados con XPC y uno llamado Elevator, pero estoy un poco confundido.

Mucho parece tratarse con la configuración de algún tipo de modelo de cliente/servidor, pero no estoy seguro de cómo se traduciría esto en que realmente instalé mis archivos en los directorios correctos. La mayoría de los ejemplos son solo pasar cadenas.

Mi pregunta simplemente: ¿Cómo puedo crear mi carpeta en/Library mediante programación y escribir archivos periódicamente mientras solo solicito al usuario una contraseña UNA VEZ y nunca más? Realmente no estoy seguro de cómo abordar esto y no parece haber mucha documentación.

Respuesta

4

Tiene razón en que no hay mucha documentación para esto. Básicamente, escribirás otra aplicación, la aplicación de ayuda, que se instalará con SMJobBless(). No es sorprendente que la parte difícil aquí es la firma de código. La parte menos obvia para mí fue que las entradas SMAuthorizedClients y SMPrivilegedExecutables en los archivos de información de cada aplicación dependen de la identidad/certificado que utilizó para firmar la aplicación. También hay un truco con el compilador/vinculador para obtener el archivo de información compilado en la herramienta auxiliar, que será un único archivo ejecutable, en lugar de un paquete.

Una vez que haya activado la aplicación de ayuda, debe idear una forma de comunicarse con ella, ya que se trata de dos procesos diferentes. XPC es una opción, tal vez la más fácil. XPC se usa generalmente con procesos de servidor, pero lo que está utilizando aquí es el lado de la comunicación de XPC solamente. Básicamente, pasa los diccionarios hacia adelante y hacia atrás entre las dos aplicaciones. Crea un formato estándar para el diccionario. Usé @ "acción", @ "fuente" y @ "destino" con 3 valores de acción diferentes, @ "filemove", @ "filecopy", y @ "makedirectory". Esas son las 3 cosas que mi aplicación de ayuda puede hacer y puedo agregar más fácilmente si es necesario.

La aplicación de ayuda básicamente configurará la conexión XPC y el manejador de eventos y esperará una conexión y comandos. Los comandos serán solo un diccionario, por lo que debe verificar las claves/valores apropiados y hacer lo que sea.

Puedo proporcionar más detalles y códigos si necesita más ayuda, pero esta pregunta tiene 9 meses, así que no quiero perder el tiempo dándole detalles que ya ha descubierto.

Cuestiones relacionadas