使用 bash.sh 运行 cron 的权限被拒绝
- 2024-11-04 08:43:00
- admin 原创
- 47
问题描述:
如何在这里使用 bash 脚本运行 cron。我按照以下方式操作,但出现错误。我想知道如何在 ubuntu 中执行此操作。我现在对此感到震惊
bash.sh文件
#!/bin/bash
cd /var/www/Controller
/usr/bin/php post.php
在 crontab -e 中
* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1
但现在我收到以下错误
/bin/sh: 1: /home/samitha/bash.sh: Permission denied
我该如何修复它?我做错了什么?
解决方案 1:
您也可以尝试以下解决方案:
chmod +x post.php
chmod +x bash.sh
echo "* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1" >> cronjob
chmod +x cronjob
/etc/init.d/crond start #redhat based servers like centos
/etc/init.d/cron start #debian based servers like ubuntu
crontab cronjob
解决方案 2:
问题可能是您的用户没有执行该文件的权限。
首先为脚本设置执行标志
chmod +x /home/samitha/bash.sh
然后你应该使用以下命令检查 php 文件的权限
ls -lah /var/www/Controller
如果您的用户组和用户名均未显示,则您必须以超级用户权限运行该脚本或更改其权限。
第一种方式是将您的条目放入
sudo crontab -e
或者第二个是(我不推荐,因为每个人都可以通过访问你的网站来执行脚本)
chmod a+x /var/www/Controller/post.php
解决方案 3:
执行该 cron 的用户(执行 cron -e 的用户)没有执行该脚本的适当权限。也就是说:要么该脚本缺少执行标志,要么由于其某些祖先目录缺少执行标志而无法访问该脚本。
解决方案 4:
TL;DR:在 crontab 中的脚本以及该脚本调用的任何脚本前插入“bash”。
我有一个解决方案。之前的所有答案都对我不起作用。我有两台运行 Kubuntu(已更新到内核 v5.8)的华硕笔记本电脑,配置几乎相同。我不知道为什么一台有问题而另一台没有。然而,经过两天的试验,我找到了解决办法。希望有人比我更有知识,能找到原因。
Cron 使用 sh 而不是 bash。我尝试在 crontab 中的命令上方添加 SHELL=/bin/bash 并定义 PATH,但没有任何效果。我的所有脚本开头都有 #!/bin/bash shebang,同样没有任何效果。我的脚本(及其目录)的权限是 777。无论我在文件上尝试了哪种用户:组组合,脚本都不会为 cron 或用户运行。使用完整路径名是 cron,并且在脚本内部没有任何效果,这与使用环境变量不同。
我的修复方法是在 crontab 中的脚本文件名前插入“bash”。例如:
00 01 * bash $BASH_SCRIPTS/backup_os.sh
(是的,cron 使用我在 /etc/environment 中定义的环境变量没有任何问题。)此外,在 cron 中,当一个脚本运行另一个脚本时,第二个脚本将获得“权限被拒绝”的结果,除非该脚本被修改为在第二个脚本的文件名之前包含“bash”,或者使用“source”(如果这适用于您的脚本)。
解决方案 5:
我遇到了与 OP 完全相同的错误,不过是在 RHEL 上。当然这不是 cron 问题,而是权限问题。我应该尝试手动运行脚本来检查这个问题,但我没有这样做,因为它在其他服务器上运行良好,文件权限也没有问题。最后,经过几个小时的思考,我发现原因是在这个特定的服务器上,带有主目录的 FS 是使用noexec
选项挂载的(例如,用于mount | grep home
检查挂载选项/home
)。另一个需要记住的细节。
编辑:我读了更多内容,结果发现noexec
出于“安全”原因,现在建议在带有主目录的 FS 上使用(尽管这样做的意义值得商榷)。我还意识到,yendao42 可能也遇到了同样的问题,因为bash
在 bash 脚本前面添加确实是一个非常简单的解决方法,可以解决此问题。
解决方案 6:
文件必须是可执行的 (@see chmod)
所有父目录都必须具有执行标志 (@see chmod)
如果 crontab 由不同的用户(即非所有者)运行,则该用户可能没有执行权限。(@see chown)
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件