O Root Cron não executa o script (permissão negada)


17

Editei minha guia cron raiz para executar periodicamente um script localizado na pasta de um usuário específico usando este comando:

sudo crontab -e

Quando o cron executa o script, esta é a saída:

sh: 1: /home/user/Location/Of/Script: Permission denied

Eu pensei que o cron raiz tivesse permissão para fazer qualquer coisa. Não tenho nenhum problema quando executo manualmente este script como root.

Li na documentação que mais informações sobre erros podem ser encontradas aqui:

sudo cat /var/log/syslog

Aqui está o que eu encontrei:

Jan 30 12:30:01 backup CRON[17702]: (CRON) info (No MTA installed, discarding output)

No entanto, acho que isso provavelmente não está relacionado à questão da permissão negada.

Então, o que eu realmente preciso fazer?


3
Você pode listar permissões /home/user/Location/Of/Script? Por exemplo la -l /home/user/Location/Of/Script. Aliás, você precisa de um MTA instalado para uso interno normal, mesmo que você não esteja enviando / recebendo emails externamente. Estou surpreso que seu sistema ainda não o tenha instalado.
Faheem Mitha

1
Isso pode ser devido a todo tipo de coisa. Por favor, poste a saída do comando @FaheemMitha solicitado, bem como a linha relevante em seu crontab
terdon

#rw-r - r-- (esse foi o problema)
-Obrigado #

Você diz que resolveu o problema com "-rw-r - r--", mas eu não sei o que é isso ou como usá-lo, e tenho o mesmo problema descrito neste tópico. Você pode ser um pouco mais específico com sua solução para a posteridade? Pessoas como eu ficarão realmente agradecidas por isso. Obrigado!
Johnson Jason

@JohnsonJason: O problema era que as permissões no arquivo de script não permitiam a execução. Veja a resposta aceita, que mostra como dar permissão ao script para ser executado.
Lonniebiz

Respostas:


19

Eu acho que seu script não é executável. Portanto, use o seguinte comando para fazê-lo:

chmod +x /home/user/Location/Of/Script

Ou, se você não é o proprietário desse script:

sudo chmod +x /home/user/Location/Of/Script

Então, para que o cron execute o script, ele deve ser executável, mas manualmente, como root, não é necessário esse sinalizador, certo?
precisa saber é o seguinte

1
Depende de como você executa o script manualmente. Se você executar o script usando ./Sciptou /home/user/Location/Of/Scriptnão está ok. Geralmente, qualquer script deve ser executável. Consulte Como executar um script de shell no Linux .
Radu Rădeanu 30/01

Isso faz sentido, mas eu realmente tenho executado esse script manualmente da maneira ./script sem encontrar nenhum problema de permissão até tentar agendá-lo. Obrigado pela ajuda.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.