Em qual usuário as tarefas do cron devem ser executadas como?

1

Servidor Ubuntu com usuários

root  
www-data  
mywebsite1  
mywebsite2

Existem vários sites hospedados neste servidor, cada um com seu próprio usuário.
Cada site tem suas próprias tarefas cron, principalmente fazendo backup de arquivos e enviando e-mails.

Devo executar todos os cron jobs usando um usuário universal como www-data ou root?
Ou devo executar os trabalhos como o usuário específico de cada site, pois cada trabalho do cron é específico para o site individual?

    
por csi 13.05.2013 / 18:15

2 respostas

2

Geralmente, tarefas agendadas que fazem coisas como "arquivos de backup" e "enviar e-mail" precisam fazer isso no contexto do usuário cujos arquivos estão sendo manipulados. Isso garante que eles tenham permissão para ler e gravar os arquivos e que as ações executadas possam ser auditadas como correspondentes a esse usuário.

Então, você desejará executar os trabalhos cron como o usuário em cujo nome eles agem.

    
por 13.05.2013 / 18:22
1

Isso depende do tipo de cronjon.
Exemplo 1:

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

Nesse caso, não importa o usuário em execução.
Exemplo 2:

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

Nesse caso, eu rodaria com o mesmo usuário que o virtualhost está rodando (no caso de cada vhost possuir um usuário próprio). Porque o script pode criar arquivos / pastas ou tentar escrevê-los, e você não quer arquivos / pastas de propriedade raiz undex domain.com.

Terceiro caso: PHP rodando como mod_php ou scripts CGI sem suexec (geralmente, neste caso, o usuário ftp difere do usuário sob o qual os scripts estão sendo executados). Neste caso, os scripts podem ser executados como o usuário do ftp ou o usuário do servidor da web - www-data. Depende.

    
por 13.05.2013 / 18:23