web-dev-qa-db-fra.com

Comment utiliser crontab en tant qu'utilisateur: www-data?

Ma lampe est configurée pour fonctionner en tant que user:www-data et tous les fichiers et dossiers sont créés avec ces autorisations.

J'ai configuré pour 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 de cache à un emplacement spécifié (aucun problème avec cela), mais ce fichier de cache est créé avec les droits utilisateur: les autorisations utilisateur et non les autorisations user:www-data.

Comment puis-je faire en sorte qu'il crée par défaut un fichier avec les autorisations user:www-data?
Je ne peux pas y aller et chown chaque fois que le fichier est recréé.

Merci.

29
arma

Vous pouvez écrire votre entrée dans le système crontab /etc/crontab, qui nécessite un argument supplémentaire spécifiant que l'utilisateur doit s'exécuter en tant que (généralement root, mais pouvant être www-data).

Votre ligne deviendrait:

*/5 * * * * www-data php /var/www/public/voto_m/artisan top >/dev/null 2>&1

Ou vous pouvez éditer la crontab de l'utilisateur www-data avec su:

Sudo su -c "crontab -e" www-data
37
mivk

Vous pouvez également exécuter crontab avec l'argument -u pour éditer une crontab pour un utilisateur spécifique:

Sudo crontab -u www-data -e
47
Code Commander

Pour exécuter une crontab en tant qu'utilisateur www-data, vous pouvez utiliser la commande suivante:

crontab -u www-data -e

Ensuite, vous écrivez une ligne, par exemple pour exécuter un fichier php toutes les 15 minutes:

*/15  *  *  *  * php -f /path_to_cron/cron.php

Lors de la sauvegarde, l'éditeur vous demandera:

File Name to Write: /tmp/crontab.HMpG7V 

Enregistrez-le là-bas, pas de soucis. crontab -e ouvre un fichier dans/tmp au lieu de la crontab réelle afin qu'il puisse vérifier les erreurs de votre nouvelle crontab et vous empêcher de remplacer votre crontab réelle par ces erreurs. S'il n'y a pas d'erreur, votre crontab sera mise à jour. Si crontab -e venait d'écrire directement dans votre crontab, vous risqueriez de perdre tout votre crontab.

Pour vérifier que votre tâche cron est exécutée, vous pouvez consulter les journaux cron. généralement dans /var/log/cron.log ou en exécutant la commande suivante:

crontab -u www-data -l
3
spacebiker