My LAMP est configuré pour fonctionner au fur user:www-data
et à mesure que tous les fichiers et dossiers sont créés avec ces autorisations.
J'ai configuré crontab en tant qu'utilisateur @ ubuntu.
Donc je fais crontab -e
et utilise cette commande:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Fondamentalement, cette commande crée simplement un fichier cache à l'endroit spécifié (aucun problème avec cela), mais ce fichier cache est créé avec les autorisations utilisateur: utilisateur et non les user:www-data
autorisations.
Comment puis-je faire en sorte qu'il crée par défaut un fichier avec des user:www-data
autorisations?
Je ne peux pas y aller et chown
chaque fois que le fichier est recréé.
Merci.
awstats
, ouphp5
sessionclean) sont situés dans des/etc/cron.*
répertoires et ne sont donc pas visibles à traverscrontab -e
(même lorsque vous spécifiez l'utilisateur www-data ).Réponses:
Vous pouvez écrire votre entrée dans la crontab système
/etc/crontab
, qui prend un argument supplémentaire spécifiant l'utilisateur à exécuter en tant que (généralement root, mais peut être www-data).Votre ligne deviendrait:
Ou vous pouvez éditer la crontab de www-data utilisateur avec
su
:la source
/etc/cron.d
avec un nom descriptif, par exemple ,/etc/cron.d/artisan
.sudo su -c "crontab -e" www-data -s /bin/bash
Vous pouvez également exécuter crontab avec l'
-u
argument pour modifier une crontab pour un utilisateur spécifique:la source
Pour exécuter un crontab en tant qu'utilisateur www-data, vous pouvez utiliser la commande suivante:
Ensuite, vous écrivez une ligne, par exemple pour exécuter un fichier php toutes les 15 minutes:
Lors de sa sauvegarde, l'éditeur vous demandera:
Enregistrez-le là, pas de soucis.
crontab -e
ouvre un fichier dans / tmp à la place de la crontab réelle afin qu'il puisse vérifier les erreurs de votre nouveau crontab et vous empêcher d'écraser votre crontab réel avec ces erreurs. S'il n'y a pas d'erreurs, votre crontab réel sera mis à jour. Si crontab -e vient d'écrire directement sur votre crontab réel, vous risquez de faire exploser l'intégralité de votre crontab.Pour vérifier que votre cronjob s'exécute, vous pouvez consulter les journaux cron. généralement dans /var/log/cron.log ou en exécutant la commande suivante:
la source
Je voudrais ajouter une autre approche. Comme d'autres personnes l'ont mentionné, Ubuntu (16.04 ici) et www-data crontab ne semblent pas fiables (c'est peut-être une question de sécurité?).
Quoi qu'il en soit, dans notre entreprise, nous aimons avoir tous les cronjobs sur un serveur facilement accessible, pour ne rien manquer. En même temps, nous ne voulons pas tout exécuter (quoi que ce soit vraiment!) En tant que root.
Par conséquent, nous courons
Comme vous le faites normalement, puis nous spécifions la commande comme
Cela exécutera / path / to / command en tant que www-data tout en conservant le cronjob dans le fichier cronjobs racine (et cela s'exécutera toujours correctement). Il a l'avantage de pouvoir écrire les fichiers journaux en tant que root (pour une sécurité maximale) à l'aide de canaux.
Notez que nous passons notre shell préféré, cela pourrait également être / bin / sh pour un shell plus simple (nous aimons juste les capacités bash complètes). Www-data n'a pas de shell spécifié, vous obtiendrez donc des erreurs sans lui. Normalement, cron exécute les tâches avec / bin / sh uniquement.
la source