Root Cron Won't Run Script (izin ditolak)

17

Saya telah mengedit tab root cron saya untuk secara berkala mengeksekusi skrip yang terletak di folder pengguna tertentu menggunakan perintah ini:

sudo crontab -e

Ketika cron menjalankan skrip, ini adalah output:

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

Saya pikir root cron memiliki izin untuk melakukan apa saja. Saya tidak memiliki masalah ketika saya menjalankan skrip ini secara manual sebagai root.

Saya telah membaca di dokumentasi bahwa info kesalahan lebih lanjut dapat ditemukan di sini:

sudo cat /var/log/syslog

Inilah yang saya temukan:

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

Namun, saya pikir ini mungkin tidak terkait dengan masalah izin yang ditolak.

Jadi apa yang harus saya lakukan?

Lonniebiz
sumber
3
Bisakah Anda mendaftar izin /home/user/Location/Of/Script? Misalnya la -l /home/user/Location/Of/Script. Secara kebetulan, Anda memerlukan MTA yang diinstal untuk penggunaan internal normal, bahkan jika Anda tidak mengirim / menerima email secara eksternal. Saya terkejut sistem Anda belum menginstalnya.
Faheem Mitha
1
Ini bisa jadi karena segala macam hal. Silakan posting output dari perintah @FaheemMitha yang diminta serta baris yang relevan di crontab Anda
terdon
-rw-r - r-- (ini masalahnya) -Terima kasih
Lonniebiz
Anda mengatakan bahwa Anda menyelesaikannya dengan "-rw-r - r--" tetapi saya tidak tahu apa itu atau bagaimana menggunakannya dan saya memiliki masalah yang sama seperti yang dijelaskan di utas ini. Bisakah Anda sedikit lebih spesifik dengan solusi Anda untuk keturunan? Orang-orang seperti saya akan sangat berterima kasih untuk itu. Terima kasih!
Johnson Jason
@JohnsonJason: Masalahnya adalah bahwa izin pada file skrip tidak mengizinkan eksekusi. Lihatlah jawaban yang diterima, yang menunjukkan bagaimana memberikan izin skrip untuk dieksekusi.
Lonniebiz

Jawaban:

19

Saya pikir skrip Anda tidak dapat dieksekusi. Jadi, gunakan perintah berikut untuk membuatnya:

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

Atau, jika Anda bukan pemilik skrip itu:

sudo chmod +x /home/user/Location/Of/Script
Radu Rădeanu
sumber
Jadi untuk cron untuk menjalankan skrip harus dijalankan, tetapi secara manual sebagai root tidak memerlukan flag ini, kan?
Lonniebiz
1
Tergantung bagaimana Anda menjalankan skrip secara manual. Jika Anda menjalankan skrip menggunakan ./Sciptatau /home/user/Location/Of/Scripttidak ok. Umumnya skrip apa pun harus dapat dieksekusi. Lihat Cara menjalankan skrip shell di Linux .
Radu Rădeanu
Itu masuk akal, tetapi saya benar-benar telah menjalankan skrip ini secara manual dengan cara ./script tanpa menemui masalah izin apa pun hingga saya mencoba untuk menyalinnya. Terima kasih atas bantuannya.
Lonniebiz