Estoy intentando ejecutar un script de shell como un trabajo cron. El problema es que mi script debe ejecutarse como superusuario. Lo intenté simplemente escribiendo sudo
infront del comando en mi archivo crontab
, pero no funcionó.
Estoy intentando ejecutar un script de shell como un trabajo cron. El problema es que mi script debe ejecutarse como superusuario. Lo intenté simplemente escribiendo sudo
infront del comando en mi archivo crontab
, pero no funcionó.
Cron no está en desuso de ninguna manera, pero LaunchD tiene más versatilidad y se usa, y Apple lo mantiene y da soporte activamente. Su guía de mejores prácticas es here
Los trabajos LaunchDaemon (en comparación con los LaunchAgents, que toman un ID de usuario) se ejecutan en el contexto de la raíz sin necesidad de habilitar al usuario raíz. Todo lo que se requiere es un archivo XML correctamente formado (puede copiar y pegar los existentes en / Library / LaunchDaemons, sustituyendo su script por los ProgramArguments con las claves de programación correspondientes) con la propiedad / permisos adecuados. Una reseña más antigua se puede encontrar aquí: artículo de lanzamiento en profundidad de afp548
Es un riesgo de seguridad, pero puede habilitar al usuario root y ejecutar el comando en el cron de root. Alternativamente, has intentado usar sudo -s
para obtener un "shell de root" y hacer el cron de root de esa manera. Dependiendo del nivel de su sistema operativo, es posible que no necesite tener la raíz habilitada como usuario para que se ejecute su cron.
Si desea hacerlo sin habilitar al usuario root (lo cual no es realmente necesario en este caso), puede (como cualquier usuario administrativo) ingresar sudo crontab -u root -e
para editar el crontab de root directamente.
Comente "Defaults requiretty" de / etc / sudoers usando visudo.