Root Cron nie uruchomi skryptu (odmowa uprawnień)

17

Edytowałem kartę root cron, aby okresowo uruchamiać skrypt znajdujący się w folderze określonego użytkownika za pomocą tego polecenia:

sudo crontab -e

Gdy cron uruchamia skrypt, jest to wynik:

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

Myślałem, że root cron ma pozwolenie na zrobienie czegokolwiek. Nie mam problemu, gdy ręcznie uruchamiam ten skrypt jako root.

Przeczytałem w dokumentacji, że dalsze informacje o błędach można znaleźć tutaj:

sudo cat /var/log/syslog

Oto, co znalazłem:

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

Myślę jednak, że prawdopodobnie nie ma to związku z odmową wydania pozwolenia.

Więc co naprawdę muszę zrobić?

Lonniebiz
źródło
3
Czy możesz wymienić uprawnienia /home/user/Location/Of/Script? Np la -l /home/user/Location/Of/Script. Nawiasem mówiąc, potrzebujesz MTA zainstalowanego do normalnego użytku wewnętrznego, nawet jeśli nie wysyłasz / nie odbierasz wiadomości e-mail z zewnątrz. Dziwię się, że twój system nie ma już zainstalowanego.
Faheem Mitha
1
Może to wynikać z różnego rodzaju rzeczy. Proszę zamieścić dane wyjściowe polecenia @FaheemMitha, a także odpowiedni wiersz w swoim
crontabie
-rw-r - r-- (to był problem)
-Dziękuję
Mówisz, że rozwiązałeś go za pomocą „-rw-r - r--”, ale nie wiem co to jest ani jak go używać i mam ten sam problem, jak opisano w tym wątku. Czy możesz być bardziej konkretny ze swoim rozwiązaniem dla potomności? Ludzie tacy jak ja będą za to bardzo wdzięczni. Dziękuję Ci!
Johnson Jason,
@JohnsonJason: Problem polegał na tym, że uprawnienia do pliku skryptu nie zezwalały na wykonanie. Spójrz na zaakceptowaną odpowiedź, która pokazuje, jak zezwolić skryptowi na wykonanie.
Lonniebiz

Odpowiedzi:

19

Myślę, że twój skrypt nie jest wykonywalny. Aby to zrobić, użyj następującego polecenia:

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

Lub, jeśli nie jesteś właścicielem tego skryptu:

sudo chmod +x /home/user/Location/Of/Script
Radu Rădeanu
źródło
Aby cron mógł uruchomić skrypt, musi on być wykonywalny, ale ręcznie, ponieważ root nie potrzebuje tej flagi, prawda?
Lonniebiz
1
Zależy jak ręcznie uruchomić skrypt. Jeśli uruchomisz skrypt za pomocą ./Sciptlub /home/user/Location/Of/Scriptnie jest to w porządku. Zasadniczo każdy skrypt musi być wykonywalny. Zobacz Jak uruchomić skrypt powłoki w systemie Linux .
Radu Rădeanu
To ma sens, ale tak naprawdę uruchomiłem ten skrypt ręcznie ./script, nie napotykając żadnych problemów z uprawnieniami, dopóki nie spróbowałem go skronić. Dzięki za pomoc
Lonniebiz