从 php 脚本以编程方式创建 cron 作业

从 php 脚本以编程方式创建 cron 作业

我有 Raspberry Pi,上面安装了 Raspbian。我需要一个需要可变时间段(每 10、20、30、40、50 或 60 分钟)的 cron 作业。我发现在不编辑 crontab 文件的情况下创建新 cron 作业的最简单方法是在/etc/cron.d.我的文件/etc/cron.d/myCron如下所示:

*/10 * * * * root /home/pi/myScript >> /home/pi/myLog.log 2>&1

及其所有者/权限:

-rw-r--r-- 1 root root  84 Sep  9 16:15 myCron

现在我需要通过 php 脚本写入该文件,如下所示:

<?php
$config = $_GET["config"];
$cron = fopen('/etc/cron.d/myCron','w');
fwrite($cron,"*/".$config['interval']." * * * * root /home/pi/myScript >> /home/pi/myLog.log 2>&1")
fclose($cron);
?>

为了改变时间段。

问题是,php是由用户运行的www-data,目录中的文件cron.d需要属于root并且必须具有权限-rw-r--r--,否则它将无法工作。

关于如何实现这一目标有什么想法吗?谢谢!

答案1

一种方法,用于crontab安装新文件,请参阅crontab -选项。

显然,您会在更新 root 的 crontab 时遇到问题,但sudo可以允许您这样做。

/var/spool/cron/crontabs将用于最终目的地位置/etc/cron.d

为了获得最佳安全性(不确定这对于您的情况是否重要),请尝试以最少的权限执行尽可能多的操作,然后以 root 身份执行脚本的最终运行。

可以配置sudo为允许www-数据to 仅以 root 身份运行一个特定的 shell 脚本,该脚本执行实际的更新。然后,最低限度的许可就被允许了。 IE。创建文件可以如下完成www-数据

相关内容