J'ai peu de travaux crontab qui fonctionnent sous root, mais cela me pose quelques problèmes. Par exemple, tous les dossiers créés au cours de cette tâche cron sont sous la racine de l'utilisateur et la racine du groupe. Comment puis-je le faire fonctionner sous l'utilisateur www-data et le groupe www-data afin que lorsque j'exécute des scripts à partir de mon site Web, je puisse manipuler ces dossiers et fichiers?
Mon serveur fonctionne sur Ubuntu.
La tâche crontab actuelle est:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
crontab -e
tant qu'utilisateur spécifique.cron
sur les systèmes * nix, il n'est pas nécessaire qu'un utilisateur se connecte pour exécuter les travaux spécifiés dans la crontab d'un utilisateur spécifique.EDIT: Notez que cette méthode ne fonctionnera pas avec crontab -e, mais ne fonctionnera que si vous éditez / etc / crontab directement. Sinon, vous pouvez obtenir une erreur comme
/bin/sh: www-data: command not found
Juste avant le nom du programme:
la source
crontab -e
, mais ne fonctionnera que si vous modifiez/etc/crontab
directement. Lisez le commentaire en haut de ce fichier pour plus d'informations.sudo crontab -e
, je vois les emplois. Mais j'ouvre le fichier,/etc/crontab
il n'y a pas de travaux. Est-ce bizarre? De plus, sisudo crontab -e
j'ajoute un travail avec l'utilisateur spécifié, cela fonctionnera-t-il?Puisque vous exécutez Ubuntu, votre crontab système se trouve à
/etc/crontab
.En tant qu'utilisateur root (ou en utilisant sudo), vous pouvez simplement modifier ce fichier et spécifier l'utilisateur qui doit exécuter cette commande. Voici le format des entrées dans la crontab système et comment vous devez entrer votre commande:
Bien sûr, les autorisations pour votre script php et votre fichier journal doivent être définies pour que l'
www-data
utilisateur y ait accès.la source
crontab -e
cependant; mais non.Vous pouvez également essayer d'utiliser
runuser
(en tant que root) pour exécuter une commande en tant qu'utilisateur différentVoir également:
man runuser
la source
runuser
n'est pas inclus dans Ubuntu.La suggestion de Mike semble être la «bonne façon». Je suis tombé sur ce fil voulant spécifier l'utilisateur
vncserver
sous lequel s'exécuter au redémarrage et je voulais conserver tous mes travaux cron au même endroit.J'obtenais l'erreur suivante pour le cron VNC:
Dans mon cas, j'ai pu utiliser
sudo
pour spécifier avec qui exécuter la tâche.la source
sudo: sorry, you must have a tty to run sudo