Cronjob não está executando como apache

3

Eu tenho um cron job que executa um script PHP e cria arquivos (imagens). Mas o cron job está rodando como eu (sendo eu meu próprio nome de usuário), não apache, ninguém, httpd, www ... e todos os arquivos criados pertencem a este usuário .

Se eu executar o mesmo script por meio de um navegador, ele será executado como apache. Eu testei com whoami e verifiquei as permissões do arquivo.

O problema é que, se eu desenvolver uma interface web para remover arquivos (que é como os usuários / administradores poderão gerenciar as imagens), ele será executado como apache e não poderá remover os arquivos, como o apache não é o proprietário nem pertence ao mesmo grupo que me .

Qual seria a maneira correta de lidar com isso?

  • Adicionar mim ao grupo do apache ou vice-versa?
  • Salve os arquivos com a permissão 0777? Isso parece "feio"
  • Tente executar o cron job como apache? Como?
por rlcabral 26.02.2012 / 18:05

2 respostas

0

Existem soluções diferentes:

  1. Adicione seu usuário ao grupo de usuários www-data , nobody ou o que quer que seja chamado em seu sistema. Você também precisa conceder permissão de gravação ao grupo.
  2. Execute o cron job sob o usuário do apache. Isso pode ser feito usando um comando como: sudo su apache_user -c "crontab -e" . No entanto, isso pode não funcionar dependendo se é permitido alternar para o usuário do apache e adicionar tarefas agendadas para apache_user .

Acho que o ponto 1 deveria ser melhor.

    
por 26.02.2012 / 18:29
7

É melhor executar o cron job como seu usuário do apache:

sudo crontab -u apache_user -e

Esta é uma solução mais limpa em comparação com a execução do trabalho como você , porque o que pertence ao apache deve permanecer assim. A mistura de usuários trará confusão e poderá gerar problemas em algum momento.

    
por 26.02.2012 / 20:29