Tengo un problema de decisión de programación y espero que pueda mostrarme una solución o decirme si mi plan sobre cómo resolver el problema sería correcto o no.
Estoy administrando algunos macs y quiero ejecutar un script cada vez que un usuario inicia sesión. El script (que aún no he escrito) necesita hacer algunos cambios (o no). Los cambios necesitan privilegios de administrador, pero la secuencia de comandos también necesita información del usuario que ha iniciado sesión (o ha iniciado sesión).
Normalmente, esto sería un trabajo para un LaunchAgent / Deamon, pero aquí viene el problema: los scripts en / LaunchDeamons se ejecutan como administradores del sistema, pero comienzan junto con el sistema. No están al tanto de los usuarios que inician o cierran sesión y es posible que no muestren una GUI. ~ / LaunchAgents se ejecuta como el usuario que inició sesión y se inicia cuando el usuario inicia sesión. También pueden mostrar una GUI. Sin embargo, no se ejecutan como administrador del sistema.
Este es mi problema: ejecutar un script como root, pero iniciarlo cada vez que un usuario inicia sesión y le presenta una GUI: mi solución sería escribir dos scripts:
El script 1 se ejecuta como administrador del sistema y se encuentra en / LaunchDeamons. Esto tendría un Socket abierto para conexiones entrantes (también conocido como "Socket de servidor").
El script 2 se ejecuta cuando el usuario ha iniciado sesión y se encuentra en ~ / LaunchAgents. Presenta una GUI al usuario y envía la información al script 1 a través de una conexión de socket.
No me parece que sea la solución más confiable / directa, pero no puedo pensar en otra cosa. También intenté descubrir cómo otros programas resuelven este problema (munki, por ejemplo, que presenta una GUI al usuario pero instala programas como administrador del sistema) pero no pude averiguar cómo lo hicieron.
¡Me encantaría recibir algunos comentarios sobre esto! Saludos, Christian
PS: planeo usar python.