Ubuntu

cron 作業應該以哪個使用者身份執行?

  • May 13, 2013

帶有使用者的 Ubuntu 伺服器

root  
www-data  
mywebsite1  
mywebsite2

該伺服器上託管了多個網站,每個網站都有自己的使用者。

每個網站都有自己的 cron 作業,主要是備份文件和發送電子郵件。

我應該使用通用使用者(如 www-data 或 root)執行所有 cron 作業嗎?

或者我應該作為每個站點的特定使用者執行這些作業,因為每個 cron 作業都特定於單個站點?

通常,執行“備份文件”和“發送電子郵件”之類的 cron 作業需要在他們正在操作其文件的使用者的上下文中執行此操作。這可確保他們具有讀取和寫入文件的權限,並且可以將所採取的操作審核為與該使用者相對應。

因此,您將希望以他們所代表的使用者身份執行 cron 作業。

這取決於cronjon的類型。

範例 1:

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

在這種情況下,執行使用者無關緊要。

範例 2:

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

在這種情況下,我將使用執行虛擬主機的同一使用者執行(如果每個虛擬主機都有自己的使用者)。因為腳本可能會創建文件/文件夾或嘗試編寫它們,並且您不希望 root 擁有的文件/文件夾 undex domain.com。

第三種情況:PHP 作為 mod_php 或沒有 suexec 的 CGI 腳本執行(通常在這種情況下,ftp 使用者與執行腳本的使用者不同)。在這種情況下,腳本可以作為 ftp 使用者或網路伺服器的使用者 - www-data 執行。依靠。

引用自:https://serverfault.com/questions/507338