Estou no Debian. Eu tento fazer um cron job para o youtube-dl. Consiste em um roteiro diário, com início à meia-noite. Quando executo o script manualmente, tudo funciona perfeitamente. No entanto, quando uso o cron job, recebo um erro como este:
ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...
O cron é o seguinte:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@daily /usr/local/bin/youtube-dl-script.sh >> /var/mail/nextcloud 2>&1
Entendo que há um problema de permissão em algum lugar, mas não sei como resolvê-lo.
Para a sua informação :
- proprietário/grupo da pasta de destino (
/media/Video/
) é:www-data
(proprietário),wwww-data
(grupo) - proprietário/grupo do script é:
nextcloud
(proprietário),root
(grupo) nextcloud
eroot
pertence ao grupowww-data
- e a
/media/Video/
permissão da pasta de destino () é770
(o grupo proprietário/grupo pode ler/gravar/executar, outros não podem fazer nada).
Por favor, você poderia me ajudar ? Já vi um tópico semelhante, mas a solução não foi bem-sucedida porque o problema não era exatamente o mesmo. Muito obrigado.
EDITAR (status antigo):até agora tentei copiar meu script ( youtube-dl-script.sh
) na /etc/crontab.daily
pasta, respeitando as regras (removendo a .sh
extensão e o script de propriedade de root
/ group root
). E verificar com cat /etc/crontab
me dá esta saída:
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Então, normalmente, deveria ter funcionado às 6h25 desta manhã, mas não funcionou!
Descobri que outros scripts têm -x
como final, portanto, criei arquivos chmod +x youtube-dl-script
.
Antes disso, o script é
-rwxr-x--- 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.Agora, é
-rwxr-x--x 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.
Agora tenho que esperar até amanhã às 6h25 para ver se isso funciona.
EDITAR 2 (status atual): então não funciona. Até fiz chmod 755
para ter as mesmas permissões de todos os outros scripts e reiniciei o servidor, mas não funciona.
O que é muito estranho é que, se eu fizer isso run-parts --test /etc/cron.daily
, meu script será listado e deverá ser executado porcron.daily
Por favor, se você tiver alguma ideia, fique à vontade para me informar. Obrigado.
Responder1
OK, encontrei a solução:
Primeiro mudei o script para /etc/cron.hourly
, porque não havia nenhum anacron
instalado e porque gostaria de usá-lo a cada hora. Mas não funcionou.
Então executei sudo service cron status
apenas para verificar se o serviço cron estava ativo. Foi, mas também encontrei um aviso interessante, algo como your token was expired, renew your token
. Então procurei por essa mensagem de erro na Internet e descobri que minha senha root precisava ser renovada, caso contrário o cron não funcionaria corretamente. Para verificar isso, tive que usar sudo chage -l root
o qual mostrava que minha senha de root era expired
.
Portanto, renovei minha senha root sudo passwd root
e verifiquei novamente, sudo chage -l root
o que mostrou que a senha agora está OK. Agora tudo está funcionando bem e o cron está funcionando conforme o esperado!