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

- Fecha: 27 de julio de 2026
- Proyecto: awake
- Tags: macOS, Sistemas, Seguridad

> 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.

---

Página: https://eitanf.com/es/notes/launchdaemon-not-sudoers · English: https://eitanf.com/notes/launchdaemon-not-sudoers.md · llms.txt: https://eitanf.com/llms.txt
