Mi LAMP está configurado para funcionar como user:www-data
y todos los archivos y carpetas se crean con esos permisos.
Tengo la configuración para crontab como usuario @ ubuntu.
Entonces lo hago crontab -e
y uso este comando:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Básicamente, ese comando solo crea un archivo de caché en el lugar especificado (sin problemas con eso), pero ese archivo de caché se crea con el usuario: permisos de usuario, no user:www-data
permisos.
¿Cómo puedo hacer que, de forma predeterminada, cree un archivo con user:www-data
permisos?
No puedo ir y chown
cada vez que se recrea el archivo.
Gracias.
awstats
, forphp5
sessionclean) se encuentran en/etc/cron.*
directorios y, por lo tanto, no son visiblescrontab -e
(incluso cuando se especifica www-data ).Respuestas:
Puede escribir su entrada en el crontab del sistema
/etc/crontab
, que toma un argumento adicional que especifica el usuario para ejecutarlo (generalmente root, pero puede ser www-data).Tu línea se convertiría en:
O puede editar el crontab del usuario www-data con
su
:fuente
/etc/cron.d
con un nombre descriptivo, por ejemplo ,/etc/cron.d/artisan
.sudo su -c "crontab -e" www-data -s /bin/bash
También puede ejecutar crontab con el
-u
argumento para editar un crontab para un usuario específico:fuente
Para ejecutar un crontab como usuario www-data puede usar el siguiente comando:
Luego escribe una línea, por ejemplo, para ejecutar un archivo php cada 15 minutos:
Al guardarlo, el editor le preguntará:
Guárdalo allí, no te preocupes.
crontab -e
abre un archivo en / tmp en lugar del crontab real para que pueda verificar su nuevo crontab en busca de errores y evitar que sobrescriba su crontab real con esos errores. Si no hay errores, se actualizará su crontab real. Si crontab -e acaba de escribir directamente a su crontab real, entonces correría el riesgo de volar todo su crontab.Para verificar que se ejecuta su cronjob, puede verificar los registros cron. normalmente en /var/log/cron.log o ejecutando el siguiente comando:
fuente
Me gustaría agregar otro enfoque. Como otras personas mencionaron, Ubuntu (16.04 aquí) y www-data crontab parece no ser confiable (¿tal vez es una cuestión de seguridad?).
De todos modos, en nuestra empresa nos gusta tener todos los cronjobs en un servidor de fácil acceso, para que no te pierdas nada. Al mismo tiempo, no queremos ejecutar todo (¡nada realmente!) Como root.
Por eso corremos
Como normalmente lo hace, y luego especificamos el comando como
Esto ejecutará / path / to / command como www-data mientras mantiene el cronjob en el archivo cronjobs raíz (y eso siempre se ejecutará correctamente). Tiene la buena ventaja de poder escribir los archivos de registro como root (para máxima seguridad) usando tuberías.
Tenga en cuenta que estamos pasando nuestro shell preferido, esto también podría ser / bin / sh para un shell más simple (simplemente nos gustan las capacidades completas de bash). Www-data no tiene un shell especificado, por lo que obtendrá errores sin él. Normalmente cron ejecuta trabajos solo con / bin / sh.
fuente