我需要能够从网页更新各种作业的预定运行时间,我正在寻找一种安全的方法来在红帽企业Linux系统上做到这一点。显然,直接编辑crontab文件是一个禁忌,我们限制PHP访问它的应用程序目录。我能想到的最好办法是在应用程序目录(比webroot低一级)中创建更新后的文件,然后sudo执行一个脚本来验证文件并将其移动到cron中。d目录。这是安全的还是有更好的方法?
感谢马克最好的办法是找到一个各种各样的crontab包,它基本上是一些模拟crontab的脚本。除非你有能力安装像CPanel或Plesk之类的东西。
如何使用crontab
命令?您可以在/tmp中创建一个名为newcronjobs.txt的文件,其中包含您想要添加的cron条目。调用crontab /tmp/newcronjobs.txt
将添加所有新作业。我认为这是相当安全的,但只是一个想法。
对我来说,这似乎是一个巨大的安全漏洞,我绝对不建议直接或间接地向crontab写入内容。如果您以某种方式忽略了保护您上面提到的"验证器"的一小部分,恶意用户将很容易地危及您的整个服务器。
遵循Jim的解决方案,如果可能的话使用某种框架;希望是开源的,并且由多个开发者积极开发。
如果所有添加的过程是类似的,我建议另一个,比如创建一个cron作业来执行一个特定的脚本作为一个非特权用户每一个最小公分母的分钟数和所有其他进程执行的功能添加到这个文件,并确保您硬编码尽可能多和尽可能少的依赖用户输入并确保你逃脱一切用户输入。