BookinglyTech News
Infraestructura

Automatizar sudo en macOS sin perder el control: validacion antes de ejecutar

Un enfoque de tres fases para conceder permisos minimos a scripts de monitoreo, verificando la sintaxis y el efecto real antes de aplicarlos.

2 min de lecturaDev.to0 vistas

Conceder permisos de administrador a un script automatizado siempre ha sido un acto de fe. O, dicho de otro modo, un ticket de entrada para un desastre si se comete un error tipografico en el fichero de configuracion. El autor del articulo se enfrento a un problema concreto en macOS: el demonio dasd (Duet Activity Scheduler) acumulaba 47 gigabytes de memoria comprimida, agotando el swap y provocando fallos en procesos de Chrome y notificaciones SNS. El script de monitoreo detectaba la anomalia, pero se quedaba sin poder actuar por falta de privilegios para ejecutar killall.

La solucion habitual seria añadir una regla NOPASSWD al fichero sudoers mediante visudo. Funciona, pero expone al administrador a dos riesgos significativos: un error de sintaxis puede romper sudo completamente, bloqueando el acceso a la maquina, o la regla se instala pero no funciona como se espera. Para evitar esto, el autor implemento un proceso de deploy en tres etapas verificadas.

El primer paso es restringir el acceso al minimo necesario. En lugar de permitir ejecutar killall sin restricciones, la regla especifica el binario completo y el argumento: /usr/bin/killall dasd. Esto impide que el script termine cualquier otro proceso del sistema.

El segundo paso valida la integridad de la configuracion antes de instalarla. La regla se escribe en un fichero temporal y se pasa por visudo -cf para verificar la sintaxis. Solo si la validacion aprueba, el fichero se instala en /etc/sudoers.d/ con permisos estrictos de lectura para root (440). Esto evita que ediciones posteriores manuales corrompan la sintaxis y inutilicen sudo.

La etapa final, y la mas critica, es la verificacion funcional. Una sintaxis correcta no garantiza que el permiso sea efectivo para el usuario del script. El codigo ejecuta sudo -n -l para consultar si la regla permite realmente la accion sin pedir contrasena. Si esta comprobacion falla, el script aborta. Solo tras superar esta prueba se ejecuta killall dasd y se mide la liberacion de memoria, aprovechando que launchd reinicia el servicio automaticamente.

Este enfoque transforma la gestion de privilegios de un acto de confianza ciega en un proceso auditable. Al separar la creacion, la validacion de sintaxis y la prueba de funcionalidad, se reduce la ventana de riesgo. No es un invento nuevo, sino una aplicacion rigurosa de principios de seguridad al entorno macOS, donde las herramientas de diagnostico como vm_stat y sysctl permiten medir el resultado inmediato de la intervencion.

La leccion operativa es clara: nunca instales una regla de sudoers sin validar que funciona antes de depender de ella. Un script de monitoreo que no puede actuar es peor que ninguno, pues genera una falsa sensacion de control mientras el sistema se degrada silenciosamente.