Meu LAMP está configurado para funcionar como user:www-data
e todos os arquivos e pastas são criados com essas permissões.
Eu configurei o crontab como usuário @ ubuntu.
Então eu faço crontab -e
e uso este comando:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Basicamente, esse comando apenas cria um arquivo de cache no local especificado (sem problemas), mas esse arquivo de cache é criado com o usuário: permissões de usuário, não user:www-data
permissões.
Como posso fazer que, por padrão, crie um arquivo com user:www-data
permissões?
Não posso ir e chown
cada vez que o arquivo é recriado.
Obrigado.
awstats
, para ouphp5
sessionclean) estão localizados em/etc/cron.*
diretórios e, portanto, não são visíveis atravéscrontab -e
(mesmo ao especificar o usuário www-data ).Respostas:
Você pode escrever sua entrada no sistema crontab
/etc/crontab
, que utiliza um argumento adicional especificando o usuário para executar como (geralmente root, mas pode ser www-data).Sua linha se tornaria:
Ou você pode editar o crontab do usuário www-data com
su
:fonte
/etc/cron.d
com um nome descritivo, por exemplo ,/etc/cron.d/artisan
.sudo su -c "crontab -e" www-data -s /bin/bash
Você também pode executar o crontab com o
-u
argumento para editar um crontab para um usuário específico:fonte
Para executar um crontab como usuário www-data, você pode usar o seguinte comando:
Então você escreve uma linha, por exemplo, para executar um arquivo php a cada 15 minutos:
Ao salvá-lo, você será solicitado pelo editor:
Salve lá, não se preocupe.
crontab -e
abre um arquivo em / tmp em vez do crontab real, para que ele possa verificar se há erros no seu novo crontab e impedir que você substitua seu crontab real por esses erros. Se não houver erros, seu crontab atual será atualizado. Se o crontab -e apenas escrevesse diretamente para o seu crontab real, você correria o risco de explodir todo o seu crontab.Para verificar se o seu cronjob é executado, você pode verificar os logs do cron. normalmente em /var/log/cron.log ou executando o seguinte comando:
fonte
Eu gostaria de adicionar outra abordagem. Como outras pessoas mencionaram, o Ubuntu (16.04 aqui) e o www-data crontab parecem não confiáveis (talvez seja uma questão de segurança?).
De qualquer forma, em nossa empresa, gostamos de ter todos os cronjobs em um servidor facilmente acessíveis, para que você não perca nada. Ao mesmo tempo, não queremos executar tudo (realmente nada!) Como root.
Por isso, corremos
Como você normalmente faz, e depois especificamos o comando como
Isso executará / path / to / command como www-data, mantendo o cronjob no arquivo cronjobs raiz (e isso sempre será executado corretamente). Ele tem o bom benefício de poder gravar os arquivos de log como root (para segurança máxima) usando pipes.
Observe que estamos passando nosso shell preferido, isso também pode ser / bin / sh para um shell mais simples (apenas gostamos dos recursos completos do bash). Www-data não possui um shell especificado, portanto você receberá erros sem ele. Normalmente, o cron executa tarefas apenas com / bin / sh.
fonte