Por qué el helper de Awake es un LaunchDaemon y no una regla de sudoers
awake1 min de lectura
Todo el punto de la app es pedir la contraseña una vez en vez de cada vez. Solo una de las dos opciones sobrevive un reinicio, y eso lo decide.
Impedir que una Mac se duerma significa llamar a pmset, y pmset necesita
root. El objetivo era pedir la contraseña una sola vez, no en cada toggle.
La alternativa
Una regla de sudoers acotada a las dos invocaciones de pmset. Es la
respuesta habitual, es un archivo, y funciona.
También hay que instalarla con un prompt de contraseña igual y — la parte que lo decide — concede esa capacidad a cualquier invocación de ese comando, desde cualquier lado, para siempre, sin ningún proceso propio en el medio.
Qué es en cambio
Un LaunchDaemon. Se instala una vez estando ya root (sudo make install, así
que sin prompt extra), sobrevive reinicios, y es lo único de la app que llama a
pmset alguna vez — con argumentos fijos y sin payload del que llama.
La limitación que prefiero decir antes que esconder
La app le habla al helper por notify(3), y esos canales son globales y no
autenticados: cualquier proceso de la máquina puede postear com.awake.on. Lo
que eso concede es exactamente una cosa —togglear disablesleep— porque los
eventos no llevan argumentos y la línea de comandos del helper es fija.
Esa es la misma superficie de capacidad que la regla de sudoers sin contraseña contra la que acabo de argumentar. La diferencia no es la superficie: es que esta versión sobrevive un reinicio, que es la feature.