Lo script cron non eseguirà script (autorizzazione negata)


17

Ho modificato la mia scheda cronologia principale per eseguire periodicamente uno script situato nella cartella di un determinato utente utilizzando questo comando:

sudo crontab -e

Quando cron esegue lo script, questo è l'output:

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

Pensavo che il cron cron avesse il permesso di fare qualsiasi cosa. Non ho alcun problema quando eseguo manualmente questo script come root.

Ho letto nella documentazione che ulteriori informazioni sull'errore sono disponibili qui:

sudo cat /var/log/syslog

Ecco cosa ho trovato:

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

Tuttavia, penso che questo non sia probabilmente correlato al problema di autorizzazione negata.

Quindi cosa devo davvero fare?


3
Puoi elencare le autorizzazioni /home/user/Location/Of/Script? Es la -l /home/user/Location/Of/Script. Per inciso, è necessario un MTA installato per il normale uso interno, anche se non si sta inviando / ricevendo e-mail esternamente. Sono sorpreso che il tuo sistema non lo abbia già installato.
Faheem Mitha,

1
Ciò potrebbe essere dovuto a ogni sorta di cose. Si prega di pubblicare l'output del comando @FaheemMitha richiesto nonché la riga pertinente nel crontab
terdon

-rw-r - r-- (questo era il problema)
-Grazie

Dici di averlo risolto con "-rw-r - r--" ma non so cosa sia o come usarlo e ho lo stesso problema descritto in questo thread. Puoi essere un po 'più specifico con la tua soluzione per i posteri? Le persone come me ne saranno davvero grate. Grazie!
Johnson Jason,

@JohnsonJason: il problema era che le autorizzazioni sul file di script non consentivano l'esecuzione. Guarda la risposta accettata, che mostra come autorizzare l'esecuzione dello script.
Lonniebiz,

Risposte:


19

Penso che la tua sceneggiatura non sia eseguibile. Quindi, usa il seguente comando per farlo:

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

Oppure, se non sei il proprietario di quello script:

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

Quindi per cron per eseguire lo script deve essere eseguibile, ma manualmente come root non ha bisogno di questo flag, giusto?
Lonniebiz,

1
Dipende da come si esegue manualmente lo script. Se esegui lo script usando ./Scipto /home/user/Location/Of/Scriptnon è ok. Generalmente qualsiasi script deve essere eseguibile. Vedi Come eseguire uno script di shell in Linux .
Radu Rădeanu,

Questo ha senso, ma ho davvero eseguito questo script manualmente nel modo ./script senza riscontrare problemi con le autorizzazioni fino a quando non ho provato a cron. Grazie per il tuo aiuto.
Lonniebiz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.