使用 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 ...

问题描述:

如何在这里使用 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)

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用