Tengo pocos trabajos crontab que se ejecutan bajo root, pero eso me da algunos problemas. Por ejemplo, todas las carpetas creadas en el proceso de ese trabajo cron están bajo la raíz del usuario y la raíz del grupo. ¿Cómo puedo hacer que se ejecute bajo el usuario www-data y el grupo www-data para que cuando ejecute scripts desde mi sitio web pueda manipular esas carpetas y archivos?
Mi servidor se ejecuta en Ubuntu.
El trabajo actual de crontab es:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
crontab -e
como un usuario específico.cron
on * nix systems no requiere que un usuario inicie sesión para ejecutar los trabajos especificados en el crontab de un usuario específico.EDITAR: Tenga en cuenta que este método no funcionará con crontab -e, pero solo funciona si edita / etc / crontab directamente. De lo contrario, puede obtener un error como
/bin/sh: www-data: command not found
Justo antes del nombre del programa:
fuente
crontab -e
, pero solo funciona si edita/etc/crontab
directamente. Lea el comentario en la parte superior de este archivo para obtener más información.sudo crontab -e
, veo los trabajos. Pero abro el archivo/etc/crontab
no hay trabajos. ¿Esto es raro? Además, sisudo crontab -e
agrego un trabajo con el usuario especificado, ¿funcionará?Como está ejecutando Ubuntu, su crontab del sistema se encuentra en
/etc/crontab
.Como usuario root (o usando sudo), simplemente puede editar este archivo y especificar el usuario que debe ejecutar este comando. Aquí está el formato de las entradas en el crontab del sistema y cómo debe ingresar su comando:
Por supuesto, los permisos para su script php y su archivo de registro deben establecerse para que el
www-data
usuario tenga acceso a ellos.fuente
crontab -e
sin embargo; pero no.También puede intentar usar
runuser
(como root) para ejecutar un comando como un usuario diferenteVer también:
man runuser
fuente
runuser
no está incluido en Ubuntu.La sugerencia de Mike suena como la "forma correcta". Encontré este hilo que quería especificar el usuario para ejecutar
vncserver
en el reinicio y quería mantener todos mis trabajos cron en un solo lugar.Recibía el siguiente error para el cron de VNC:
En mi caso, pude usar
sudo
para especificar a quién ejecutar la tarea.fuente
sudo: sorry, you must have a tty to run sudo