Crontabs não grava em um local (permissões?)

0

Eu tenho crontabs configurados para fazer o download de dados publicados em uma página da web e salvá-lo localmente a cada x segundos:

* * * * * sleep 0; wget -O /home/lab/Documents/watchdog.xml 'IP-address'

e isso funciona!

Eu realmente quero salvar o arquivo em outro lugar, por isso, se eu tentar:

 * * * * * sleep 0; wget -O /var/cache/watchdog.xml 'IP-address'

não funciona.

Como a alteração do local do arquivo de destino resolve o problema, estou assumindo que é um problema de permissão? Como faço para verificar / alterar permissões para crontabs ?

    
por SuperCiocia 21.12.2017 / 17:39

1 resposta

2

Os crontabs de usuário (que você edita executando crontab -e ) são executados como seu usuário - portanto, eles usam as permissões do usuário.

Então você precisa tornar o arquivo gravável como seu usuário; provavelmente sudo chown "$USER" /var/cache/watchdog.xml faria isso, se o arquivo já existir. (Se não, sudo touch /var/cache/watchdog.xml irá criar um arquivo vazio lá). Existem outras maneiras (por exemplo, alterando o grupo e tornando-o em grupo, ou usando ACLs); o que faz mais sentido depende da situação.

Como alternativa, você pode usar um crontab do sistema (configurado editando /etc/crontab com um editor de texto ou, de preferência, se o sistema o tiver, criando um arquivo em /etc/cron.d ) que pode ser executado como qualquer usuário. Observe que os crontabs do sistema adicionam um campo extra: o usuário para executar o comando como. Ele vem entre o campo do dia da semana e o campo de comando.

    
por 21.12.2017 / 17:43

Tags