根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)

但是,我认为这可能与拒绝权限问题无关。

那我真的需要做什么?


3
您可以列出的权限/home/user/Location/Of/Script吗?例如la -l /home/user/Location/Of/Script。顺便说一句,即使您没有在外部发送/接收电子邮件,也需要为正常内部使用安装MTA。我很惊讶您的系统尚未安装它。
Faheem Mitha 2014年

1
这可能是由于各种原因造成的。请发布命令@FaheemMitha请求的输出以及您的crontab中的相关行
terdon

-rw-r--r-(这是问题所在)
谢谢

您说您使用“ -rw-r--r--”解决了该问题,但我不知道它是什么或如何使用它,并且遇到了与该线程中所述相同的问题。您能否更详细地说明后代解决方案?像我这样的人会非常感激。谢谢!
詹森·杰森

@JohnsonJason:问题是脚本文件上的权限不允许执行。查看接受的答案,该答案显示了如何授予脚本执行权限。
Lonniebiz '16

Answers:


19

我认为您的脚本不可执行。因此,使用以下命令进行操作:

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

或者,如果您不是该脚本的所有者:

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

因此,要让cron运行脚本,它必须是可执行的,但是以root身份手动不需要此标志,对吗?
Lonniebiz 2014年

1
取决于您如何手动运行脚本。如果您使用./Scipt或运行脚本,/home/user/Location/Of/Script则不行。通常,任何脚本都必须是可执行的。请参阅如何在Linux中运行Shell脚本
RaduRădeanu2014年

这是有道理的,但是我确实一直以./script方式手动运行此脚本,而没有遇到任何权限问题,直到我尝试将其恢复。感谢您的帮助。
Lonniebiz 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.