cron 作业应以哪个用户身份运行?

cron 作业应以哪个用户身份运行?

Ubuntu 服务器及其用户

root  
www-data  
mywebsite1  
mywebsite2

该服务器上托管了多个网站,每个网站都有自己的用户。
每个网站都有自己的 cron 任务,主要是备份文件和发送电子邮件。

我是否应该使用通用用户(如 www-data 或 root)来运行所有 cron 作业?
或者我是否应该以每个站点的特定用户身份运行作业,因为每个 cron 作业都特定于单个站点?

答案1

通常,执行“备份文件”和“发送电子邮件”等操作的 cron 作业需要在他们正在操作其文件的用户上下文中执行这些操作。这确保他们有权读取和写入文件,并且可以审核所采取的操作是否与该用户相对应。

因此,您将需要以代表其运行的用户身份来运行 cron 作业。

答案2

这取决于 cronjon 的类型。
示例 1:

wget http://domain.com/cron.php

在这种情况下,运行用户并不重要。
示例 2:

/usr/bin/php /var/www/domain.com/cron.php

在这种情况下,我将使用虚拟主机正在运行的同一用户运行(假设每个虚拟主机都有自己的用户)。因为脚本可能会创建文件/文件夹或尝试写入它们,而您不希望 root 拥有 domain.com 下的文件/文件夹。

第三种情况:PHP 以 mod_php 或 CGI 脚本的形式运行,无需 suexec(通常在这种情况下,ftp 用户与脚本运行的用户不同)。在这种情况下,脚本可以以 ftp 用户或 Web 服务器的用户(www-data)的身份运行。视情况而定。

相关内容