Eu tenho alguns trabalhos de crontab que são executados na raiz, mas isso me dá alguns problemas. Por exemplo, todas as pastas criadas no processo dessa tarefa cron estão na raiz do usuário e na raiz do grupo. Como posso fazê-lo rodar sob o usuário www-data e agrupar www-data para que, quando executo scripts do meu site, eu possa manipular essas pastas e arquivos?
Meu servidor roda no Ubuntu.
O trabalho atual do crontab é:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
crontab -e
como um usuário específico.cron
Os sistemas on * nix não exigem que um usuário efetue login para executar as tarefas especificadas no crontab de um usuário específico.EDIT: Observe que este método não funcionará com o crontab -e, mas só funcionará se você editar o arquivo / etc / crontab diretamente. Caso contrário, você pode receber um erro como
/bin/sh: www-data: command not found
Pouco antes do nome do programa:
fonte
crontab -e
, mas funciona apenas se você editar/etc/crontab
diretamente. Leia o comentário na parte superior deste arquivo para obter mais informações.sudo crontab -e
, vejo os trabalhos. Mas eu abro o arquivo,/etc/crontab
não há trabalhos. Isso é estranho? Além disso, se eusudo crontab -e
adicionar um trabalho com o usuário especificado, ele funcionará?Como você está executando o Ubuntu, o seu sistema crontab está localizado em
/etc/crontab
.Como usuário root (ou usando o sudo), você pode simplesmente editar este arquivo e especificar o usuário que deve executar este comando. Aqui está o formato das entradas no sistema crontab e como você deve inserir seu comando:
Obviamente, as permissões para o seu script php e seu arquivo de log devem ser definidas para que o
www-data
usuário tenha acesso a eles.fonte
crontab -e
; mas não.Você também pode tentar usar
runuser
(como root) para executar um comando como um usuário diferenteVeja também:
man runuser
fonte
runuser
não está incluído no Ubuntu.A sugestão de Mike parece o "caminho certo". Me deparei com esse segmento querendo especificar o usuário para executar
vncserver
na reinicialização e queria manter todos os meus trabalhos cron em um só lugar.Eu estava recebendo o seguinte erro para o cron VNC:
No meu caso, eu pude usar
sudo
para especificar como executar a tarefa.fonte
sudo: sorry, you must have a tty to run sudo