Como executar um cron job usando o comando sudo

99

É possível executar um trabalho cron que precisa do sudo comando?

Como:

 sudo rm somefile
    
por sayem siam 09.08.2012 / 19:51

3 respostas

201

Eu não vou entender o quanto isso é uma má ideia; simplesmente, executar sudo no crontab requer que sua senha seja armazenada em algum lugar em texto simples.

É uma má ideia.

O seguinte é o método preferido de executar tarefas administrativas por meio do cron. Já que você não precisa escrever sudo no crontab, se você está modificando o crontab do root.

Use o crontab da raiz

Execute o seguinte comando:

sudo crontab -e

Isso abre o crontab de root . sudo não é necessário para executar seu comando neste contexto, já que ele será invocado como root de qualquer maneira.

Portanto, você simplesmente anexaria o seguinte ao crontab do root.

@hourly rm somefile

Agora, se você absolutamente quiser ser inseguro e assumir riscos com sua senha, o seguinte executará seu comando a partir do seu próprio crontab e digitará sua senha automaticamente quando solicitado por sudo .

Novamente, isso não é recomendado .

No seu próprio crontab, escreva seu comando da seguinte forma:

@hourly echo "password" | sudo -S rm somefile

A desvantagem óbvia aqui é que, se alguém acessar seu crontab, sua senha será legível em texto simples.

Você não deve fazer isso.

    
por SirCharlo 09.08.2012 / 20:03
26

Se você está colocando o script de um dos diretórios cron ( /etc/cron.* ), então você não precisa usar o sudo enquanto ele está rodando como root.

Se você estiver usando o crontab, então você vai querer usar o crontab do root. Isto irá rodá-lo como root, e também não precisa de sudo.

sudo crontab -e
    
por tgm4883 09.08.2012 / 20:02
2

Execute o seguinte comando no terminal

sudo visudo

Adicionada a linha a seguir ao final do arquivo:

vidyadhar  ALL= NOPASSWD: /bin/rm

No exemplo acima, vidyadhar é o nome de usuário e ele não pedirá senha se você estiver executando o comando rm através do vidyadhar.

    
por Vidyadhar 09.08.2012 / 20:07