Root Cron ne lancera pas de script (autorisation refusée)

17

J'ai édité mon onglet cron racine pour exécuter périodiquement un script situé dans le dossier d'un utilisateur particulier à l'aide de cette commande:

sudo crontab -e

Lorsque cron exécute le script, voici la sortie:

sh: 1: /home/user/Location/Of/Script: Permission denied

Je pensais que le cron racine avait la permission de faire quoi que ce soit. Je n'ai aucun problème lorsque j'exécute manuellement ce script en tant que root.

J'ai lu dans la documentation que d'autres informations sur les erreurs peuvent être trouvées ici:

sudo cat /var/log/syslog

Voici ce que j'ai trouvé:

Jan 30 12:30:01 backup CRON[17702]: (CRON) info (No MTA installed, discarding output)

Cependant, je pense que cela n'est probablement pas lié au problème de l'autorisation refusée.

Alors, que dois-je vraiment faire?

Lonniebiz
la source
3
Pouvez-vous répertorier les autorisations sur /home/user/Location/Of/Script? Par exemple la -l /home/user/Location/Of/Script. Soit dit en passant, vous avez besoin d'un MTA installé pour une utilisation interne normale, même si vous n'envoyez / recevez pas de courrier électronique en externe. Je suis surpris que votre système ne l'ait pas déjà installé.
Faheem Mitha
1
Cela pourrait être dû à toutes sortes de choses. Veuillez poster la sortie de la commande @FaheemMitha demandée ainsi que la ligne correspondante dans votre crontab
terdon
-rw-r - r-- (c'était le problème) -Merci
Lonniebiz
Vous dites que vous l'avez résolu avec "-rw-r - r--" mais je ne sais pas ce que c'est ni comment l'utiliser et j'ai le même problème que celui décrit dans ce fil. Pouvez-vous être un peu plus précis avec votre solution pour la postérité? Des gens comme moi en seront très reconnaissants. Je vous remercie!
Johnson Jason
@JohnsonJason: Le problème était que les autorisations sur le fichier script ne permettaient pas l'exécution. Regardez la réponse acceptée, qui montre comment donner au script la permission de s'exécuter.
Lonniebiz

Réponses:

19

Je pense que votre script n'est pas exécutable. Donc, utilisez la commande suivante pour le faire:

chmod +x /home/user/Location/Of/Script

Ou, si vous n'êtes pas propriétaire de ce script:

sudo chmod +x /home/user/Location/Of/Script
Radu Rădeanu
la source
Donc, pour que cron exécute le script, il doit être exécutable, mais manuellement car root n'a pas besoin de cet indicateur, non?
Lonniebiz
1
Dépend de la façon dont vous exécutez le script manuellement. Si vous exécutez le script en utilisant ./Sciptou /home/user/Location/Of/Scriptce n'est pas ok. En règle générale, tout script doit être exécutable. Voir Comment exécuter un script shell sous Linux .
Radu Rădeanu
Cela a du sens, mais j'ai vraiment exécuté ce script manuellement de la manière ./script sans rencontrer de problèmes d'autorisations jusqu'à ce que j'essaie de le cron. Merci pour ton aide.
Lonniebiz