Сервер Ubuntu с пользователями
root
www-data
mywebsite1
mywebsite2
На этом сервере размещено несколько веб-сайтов, каждый со своим пользователем.
У каждого веб-сайта есть свои собственные cron-задания, в основном для резервного копирования файлов и отправки электронных писем.
Должен ли я запускать все задания cron, используя универсального пользователя, такого как www-data или root?
Или мне следует запускать задания от имени конкретного пользователя для каждого сайта, поскольку каждое задание 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 или сценарии CGI без suexec (обычно в этом случае пользователь ftp отличается от пользователя, под которым выполняются сценарии). В этом случае скрипты могут запускаться от имени пользователя ftp или пользователя веб-сервера - www-data. Смотря как.