Ir al contenido
Eitan FeldmanBA, ARGCVenes
Notas

Por qué el helper de Awake es un LaunchDaemon y no una regla de sudoers

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.