Como habilitar execução do sudo no Cron

Publicado por Daniel Vieira em 18/11/2015

[ Hits: 8.850 ]

 


Como habilitar execução do sudo no Cron



Habilitar o comando sudo a rodar sem tty sendo possível executá-lo pelo Cron.

Algumas vezes precisamos executar certos scripts no cron sem que seja pelo usuário root, isso ocorre geralmente em ambientes de alta segurança, ou quando os scripts podem estar em diretórios com acesso externo e/ou principalmente acesso web.

Porém, pode ocorrer nesses casos, que rodando/executando o script manualmente ele funcione sem erros, mas quando adicionado ao cron ele simplesmente não executa como deveria, ou executa em partes.

Isso ocorre porque no script, em alguns comandos e acessos, é necessário utilizar previamente o comando sudo, já que não está sendo executado como root.

Só que o comando sudo não funciona quando executado pelo cron, nativamente esse comando necessita de uma sessão, um tty para ser executado.

Essa instrução fica no arquivo de configuração do sudo. Você encontrará algo assim:

# vim /etc/sudoers

# Disable "ssh hostname sudo"", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo ".

Defaults    requiretty

# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.


Defaults   !visiblepw

Primeiro passo para que funcione o sudo é comentar ou remover essas linhas:

#Defaults    requiretty
#Defaults   !visiblepw

Ou caso você queira que apenas o usuário específico que vai executar o script possa dar sudo sem shell, adicione a linha (no nosso exemplo o nome do usuário é usercron):

Defaults:usercron!requiretty

Depois no usuário que você precisa dar sudo, habilite a opção para não pedir senha.

De preferência adicione também os comandos que serão necessários no script e o próprio caminho do script.

No exemplo abaixo uma rotina simples de backup que é executada pelo script script_bkp.sh.

# vim /etc/sudoers

usercron ALL=NOPASSWD: /bin/tar, /bin/chown, /bin/chgrp, /bin/rm, /usr/bin/rsync, /usr/bin/sudo, /srv/scripts/script_bkp.sh

Espero ter ajudado.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Lazarus, o Delphi do Linux (Slackware)

Flash player em plataforma 64 bits (instalando com .deb)

Tablet PC no openSuSE 11.1 - Caneta parou de funcionar?

Corrigindo o erro de boot "Diskfilter writes as not supported"

Instalando apt-get no METASYS Class Mate PC

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts