Ejecutar el crontab como un usuario, por ejemplo www-data.

Si tienes páginas web, en muchas ocasiones tienes que ejecutar tareas cron en el servidor (indexado, limpieza, procesos que se repiten cada cierto tiempo etc9). Estos procesos debes ejecutarlos con el usuario del servidor web, por ejemplo el www-data. Hoy os damos varias opciones para hacerlo.

Cómo ejecutar crontab como un usuario.

Existen varias opciones:

  • Poner la tarea en el crontab de root pero especificar el usuario. Lo más normal es tener las tareas en el crontab de root, pero los comandos puestos ahí tienen los permisos de root. Afortunadamente podemos especificar, en la línea del comando, el usuario.
    Ejecutamos crontab -e para entrar en crontab y ponemos una línea como.
    * * * * * su www-data -s /bin/bash -c "tucomando"
  • Ejecutar desde root el crontab del usuario:
crontab -u www-data -e

En ese crontab añades la línea normal.

El primer método tiene la ventaja que tienes todas las tareas en el mismo sitio y escribirá los logs con permisos de administrador.

Siempre puedes comprobarlo luego en el log /var/log/cron.log, en el crontab de root si lo has puesto ahí, o, si has editado el del usuario, con

crontab -u www-data -l