Root-Cron führt Skript nicht aus (Berechtigung verweigert)

17

Ich habe meinen Root-Cron-Tab so bearbeitet, dass regelmäßig ein Skript ausgeführt wird, das sich im Ordner eines bestimmten Benutzers befindet.

sudo crontab -e

Wenn cron das Skript ausführt, ist dies die Ausgabe:

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

Ich dachte, der Root-Cron hätte die Erlaubnis, irgendetwas zu tun. Ich habe kein Problem, wenn ich dieses Skript manuell als root ausführe.

Ich habe in der Dokumentation gelesen, dass weitere Fehlerinformationen hier zu finden sind:

sudo cat /var/log/syslog

Folgendes habe ich gefunden:

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

Ich denke jedoch, dass dies wahrscheinlich nichts mit dem Problem der verweigerten Erlaubnis zu tun hat.

Was muss ich also wirklich tun?

Lonniebiz
quelle
3
Können Sie Berechtigungen auflisten /home/user/Location/Of/Script? Eg la -l /home/user/Location/Of/Script. Im Übrigen muss ein MTA für den normalen internen Gebrauch installiert sein, auch wenn Sie keine E-Mails extern senden / empfangen. Ich bin überrascht, dass Ihr System es noch nicht installiert hat.
Faheem Mitha
1
Dies könnte auf alles Mögliche zurückzuführen sein. Bitte posten Sie die Ausgabe des angeforderten Befehls @FaheemMitha sowie die entsprechende Zeile in Ihrem crontab
terdon
-rw-r - r-- (das war das Problem) -Danke
Lonniebiz
Sie sagen, Sie haben es mit "-rw-r - r--" gelöst, aber ich weiß nicht, was das ist oder wie ich es verwenden soll, und ich habe das gleiche Problem wie in diesem Thread beschrieben. Können Sie etwas spezifischer mit Ihrer Lösung für die Nachwelt umgehen? Leute wie ich werden wirklich dankbar dafür sein. Vielen Dank!
Johnson Jason
@JohnsonJason: Das Problem war, dass die Berechtigungen für die Skriptdatei keine Ausführung zuließen. Sehen Sie sich die akzeptierte Antwort an, die zeigt, wie Sie dem Skript die Berechtigung zum Ausführen erteilen.
Lonniebiz

Antworten:

19

Ich denke, dass Ihr Skript nicht ausführbar ist. Verwenden Sie dazu den folgenden Befehl:

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

Oder, wenn Sie nicht der Eigentümer dieses Skripts sind:

sudo chmod +x /home/user/Location/Of/Script
Radu Rădeanu
quelle
Damit cron das Skript ausführen kann, muss es ausführbar sein, aber manuell, da root dieses Flag nicht benötigt, oder?
Lonniebiz
1
Hängt davon ab, wie Sie das Skript manuell ausführen. Wenn Sie das Skript mit ausführen ./Sciptoder /home/user/Location/Of/Scriptes ist nicht in Ordnung. Im Allgemeinen muss jedes Skript ausführbar sein. Siehe So führen Sie ein Shell-Skript unter Linux aus .
Radu Rădeanu
Das ist sinnvoll, aber ich habe dieses Skript wirklich manuell auf die ./script-Weise ausgeführt, ohne dass Berechtigungsprobleme aufgetreten sind, bis ich versucht habe, es zu schreiben. Danke für deine Hilfe.
Lonniebiz