crontab não está executando meu script?

0

Eu adicionei esta regra ao final do meu crontab

* * * * * /root/test.sh

Basicamente restaura o iptables para que eu possa brincar. Se eu estragar não serei trancado fora da minha caixa. Quando eu executo o script no bash escrevendo /root/test.sh , ele limpa tudo como esperado. No entanto, se eu esperar um minuto, ele não parece ser executado.

Eu executei o comando abaixo e posso ver cada minuto que aparece para executar meu script, mas meu script não está fazendo nada.

grep CRON /var/log/syslog

IIRC o caminho para forçar um script a ser executado como o proprietário é chmod a+s file . Então eu fiz isso. stat mostra esta linha

Access: (6755/-rwsr-sr-x)  Uid: (    0/    root)   Gid: (    0/    root)

O cron não deve estar executando meu script como root? Por que isso não parece estar sendo executado? Estou executando o debian 7 (wheezy)

    
por Gilles 11.11.2014 / 08:00

1 resposta

2

Você não pode executar scripts (em oposição a um binário) com a permissão SUID. Seu script está sendo executado, mas como seu usuário, não como raiz, portanto, as chamadas iptables não estão funcionando.

Mensagens de erro de trabalhos agendados vão para o email local. Certifique-se de que o email local esteja configurado corretamente (algumas distribuições não o fazem por padrão).

A solução fácil (desde que você tenha acesso root) é instalar esse script no crontab do usuário root ou, alternativamente, em /etc/crontab usando a linha:

* * * * * root /root/test.sh
    
por 11.11.2014 / 08:07