Estoy teniendo un problema de decisión de programación y espero que puedas mostrarme una solución o decirme si mi plan sobre cómo resolver el problema estaría bien o no.
Estoy administrando algunas Mac 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 el script también necesita información del usuario que ha iniciado sesión (o está iniciando sesión).
Normalmente, este sería un trabajo para un LaunchAgent / Daemon, pero aquí viene el problema: Los scripts en /LaunchDeamons se ejecutan como administrador del sistema pero se inician junto con el sistema. No son conscientes de los inicios o cierres de sesión de los usuarios y es posible que no muestren una GUI. ~/LaunchAgents se ejecutan como el usuario que ha iniciado sesión y se inician cuando el usuario inicia sesión. También pueden mostrar una GUI. Sin embargo, no se ejecutan como administrador del sistema.
Así que este es mi problema: ejecutar un script como root, pero iniciarlo cada vez que un usuario inicia sesión y presentar una GUI a él: Mi solución sería escribir dos scripts:
Script 1 se ejecuta como administrador del sistema y se encuentra en /LaunchDeamons. Este tendría un Socket abierto para conexiones entrantes (también conocido como "Server Socket").
Script 2 se ejecuta como el usuario que está iniciando 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 esta sea la solución más fiable / sencilla, pero no se me ocurre nada más. También intenté averiguar cómo otros programas resuelven este problema (como munki, que presenta una GUI al usuario pero instala programas como administrador del sistema) pero no pude entender cómo lo hicieron.
¡Estaría encantado de recibir algunos comentarios al respecto! Saludos, Christian
PD: Planeo usar python.