Корневой Cron не запускает скрипт (разрешение запрещено)

17

Я отредактировал свою корневую вкладку cron, чтобы периодически запускать скрипт, расположенный в папке конкретного пользователя, с помощью этой команды:

sudo crontab -e

Когда cron запускает скрипт, это вывод:

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

Я думал, что корневой cron имеет разрешение на все. У меня нет проблем, когда я вручную запускаю этот скрипт от имени пользователя root.

Я прочитал в документации, что дополнительную информацию об ошибках можно найти здесь:

sudo cat /var/log/syslog

Вот что я нашел:

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

Тем не менее, я думаю, что это, вероятно, не связано с проблемой отказа в разрешении.

Так что мне действительно нужно сделать?

Lonniebiz
источник
3
Можете ли вы перечислить разрешения на /home/user/Location/Of/Script? Например la -l /home/user/Location/Of/Script. Кстати, вам нужен установленный MTA для нормального внутреннего использования, даже если вы не отправляете / не получаете электронную почту извне. Я удивлен, что ваша система еще не установлена.
Фахим Митха
1
Это может быть связано с разными вещами. Пожалуйста, опубликуйте вывод запрошенной команды @FaheemMitha, а также соответствующую строку в вашем crontab
terdon
-rw-r - r-- (это была проблема) -Спасибо
Lonniebiz
Вы говорите, что решили это с помощью "-rw-r - r--", но я не знаю, что это такое или как его использовать, и у меня возникла та же проблема, что и описанная в этой теме. Можете ли вы быть более конкретным с вашим решением для потомков? Такие люди, как я, будут очень благодарны за это. Спасибо!
Джонсон Джейсон
@JohnsonJason: проблема заключалась в том, что разрешения для файла сценария не разрешали выполнение. Посмотрите на принятый ответ, который показывает, как дать сценарию разрешение на выполнение.
Lonniebiz

Ответы:

19

Я думаю, что ваш скрипт не является исполняемым. Итак, используйте следующую команду, чтобы сделать это:

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

Или, если вы не являетесь владельцем этого скрипта:

sudo chmod +x /home/user/Location/Of/Script
Раду Рэдяну
источник
Таким образом, чтобы cron запускал скрипт, он должен быть исполняемым, но вручную, поскольку root не нуждается в этом флаге, верно?
Lonniebiz
1
Зависит от того, как вы запускаете скрипт вручную. Если вы запускаете скрипт с помощью ./Sciptили /home/user/Location/Of/Scriptэто не нормально. Обычно любой скрипт должен быть исполняемым. См. Как запустить скрипт оболочки в Linux .
Раду Рэдяну
Это имеет смысл, но я действительно запускал этот скрипт вручную ./script, не сталкиваясь с какими-либо проблемами с разрешениями, пока не попытался его cron Спасибо за помощь.
Lonniebiz