![Cron 任务错误:文件所有者错误](https://linux22.com/image/624485/Cron%20%E4%BB%BB%E5%8A%A1%E9%94%99%E8%AF%AF%EF%BC%9A%E6%96%87%E4%BB%B6%E6%89%80%E6%9C%89%E8%80%85%E9%94%99%E8%AF%AF.png)
我使用该/etc/cron.d/
文件夹来存储我的 cron 任务。这些任务是指向我实际文件的符号链接,该文件保存在 VCS 下。这些文件的所有者是名为“www-data”的用户。我读到 Cron 不会运行其他所有者的任务。(http://klenwell.com/press/2010/11/cron-d/) 那么我如何让 Cron 在不同于 root 的所有者下运行 cron 选项卡?我不想将所有者更改为 root,因为此文件夹中的所有这些文件的所有者都是“www-data”。
答案1
您不需要将文件符号链接到 /etc/cron.d,而是可以将调用您实际想要运行的脚本的小脚本放入 /etc/cron.d。
就像是:
#!/bin/bash
/srv/www/pathtoactualfile
答案2
您可以将所有权更改为 root,或者使用 crontab 命令在该特定用户的 crontab 中加载文件。
/etc/cron.d 中的 cron 文件与用户的 crontab 略有不同,您可以指定以哪个用户身份运行作业。如果 cron 不验证包含此文件的文件是否由 root 拥有,则没有 root 权限的用户可以轻松授予自己 root 权限。
0 * * * * * root cp /bin/bash /tmp/nowimroot && chown root:root /tmp/nowimroot && chmod u+s /tmp/nowimroot
答案3
为您想要运行脚本的用户创建一个 crontab。crontab -u www-data -e 将编辑 www-data 用户的 crontab。只需在其中输入完整命令即可