Al programar una tarea con cron que ejecute ciertas tareas administrativas utilizando sudo desde una cuenta de usuario no privilegiada, es posible encontrarse con este error:

sudo: sorry, you must have a tty to run sudo



Este problema se debe a que las tareas de cron no se ejecutan desde una TTY (terminal) y su salida estándar se redirige en forma de correo (a la casilla del usuario con el que se corre cada tarea). Por lo tanto, los procesos que lanza el demonio cron no tienen una TTY (controlling terminal) asociada.

Para resolverlo es necesario modificar la configuración por defecto de sudo. Editar el archivo /etc/sudoers:

# nano /etc/sudoers

Cambiar la siguiente línea:

Defaults    requiretty

Por:

#Defaults    requiretty

Esto deshabilita el requisito de que sólo se pueda ejecutar sudo cuando el usuario está logueado en una TTY real. Una protección de seguridad pensada para que sudo sólo pueda ser ejecutado por una persona desde una terminal interactiva.

Referencias

  • man sudo
  • man sudoers
  • man cron
  • man crontab
  • man tty
  • man 4 tty


Tal vez pueda interesarte


Compartí este artículo