Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: FreeBSD
Por dark
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

sudo: lendo a senha automaticamente através de shell script
Linux user
Publicado por Valter Ferraz Sanches em 24/02/2011

Login: vfs, 535494 pontos
[ Hits: 4135 ]

sudo: lendo a senha automaticamente através de shell script

Oi gente!

Um dia desses me deparei com um problema pra lá de chato, que era ter de executar um comando com permissão de root dentro de um shell script, sem ter que aguardar o prompt de senha toda vez (preciso alterar arquivos de configuração em /etc toda vez que o script roda).

Perguntei aqui no VOL, sem obter resposta satisfatória e escrevi um script que fazia o serviço para ser chamado dentro do script principal, mas toda vez ele pedia a senha, o que não resolveu muita coisa.

Mas no dia 8 de fevereiro de 2011, encontrei a solução, que estava debaixo do meu nariz (que é bem grande por sinal, dá até pra fumar na chuva...) o tempo todo. Relendo a man page do sudo, encontrei a opção "-S", a qual tentei usar várias vezes sem sucesso.

O detalhe faltante, que só percebi hoje, é que essa opção espera um caractere de newline (\n) após a senha fornecida pela saída padrão. Ou seja: simplesmente ecoar a senha pra stdout não funciona, assim:

echo "senha" | sudo -S ./meu_script

porque está faltando a newline. Veja agora como faz para funcionar:

echo -e "senha\n" | sudo -S ./meu_script

Funcionou perfeito da 2.ª vez!!!

Agora atenção: este sistema só é usado por mim! Este PC é de uso exclusivo meu. Colocar senhas em scripts é uma grave falha de segurança e eu fiz isso porque realmente sei o que estou fazendo e os riscos envolvidos.

CUIDADO COM O QUE VÃO FAZER, OK?

Abraços!!!


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada MIDI, Timidity e Rosegarden no Kurumin: Solução definitiva
   Dica Linux recomendada Atualizando o Ubuntu com uma linha
   Dica Linux recomendada Script para Ripar um cd inteiro
   Dica Linux recomendada Não esquecendo o root logado
   Dica Linux recomendada Renomeando arquivos de maiúsculo para minúsculo

Comentários
[1] Comentário enviado por bvlucena em 24/02/2011 - 23:05h:

não é melhor alterar o /etc/sudoers ?

[2] Comentário enviado por nettask em 24/02/2011 - 23:34h:

Como dito pelo bvlucena, eu teria inserido no arquivo /etc/sudoers a linha "nome_do_usuario ALL=NOPASSWD: ALL", dai não é necessário digitar a senha quando usar sudo, sem falar que executaria todos os comandos que podem ser executados como root, lembrando que isso é uma falha de segurança tb, deve ser usado por quem sabe o que está fazendo! até a proxima

[3] Comentário enviado por vfs em 25/02/2011 - 00:10h:

pensei nisso, mas entre abrir um furo com uma agulha e uma picareta, fiquei com a primeira... as duas opções são péssimas idéias, mas é que no caso do meu script, era para alterar um arquivo de configuração em /etc toda vez que rodasse... enfim! não achei que valia a pena editar um arquivo sério assim... ;-)

[4] Comentário enviado por rbarivi em 25/02/2011 - 07:01h:

Existe a possibilidade de inibir o uso de senha para um comando específico no sudo ou vc pode setar o sticky bit do arquivo para que ele ganhe super poderes de root :)

[5] Comentário enviado por d1l50n em 25/02/2011 - 10:30h:

eu teria feito um
Usuario ALL=(ALL) NOPASSWD: /caminho/do/script

[6] Comentário enviado por tiekookeit em 25/02/2011 - 13:59h:

eu ia comentar o sudoers mas aprece que todomundo ja falou isso kkk

[7] Comentário enviado por Nando-XD em 14/03/2011 - 15:14h:

sudo "codigo";
echo "senha";

o jeito que eu arrumei foi esse
depois vou dar uma olhada nisso melhor...

[8] Comentário enviado por maozinha_tribal em 03/09/2011 - 17:24h:


da pra compilar o script pra um programa em c
com um programa chamado shc,
dai ele fica em binario e ninguem
vai conseguir roubar a senha
da pra instalar bem facil por apt,

#apt-get install shc
depois do script pronto
dai é só compilar
$shc -f -r -v teste.sh

onde
f - arquivo a ser compilado;
r - modo verbose
v - torna compativel com outras distros;

dai ele fica um arquivo com o nome teste.x
depois da permição apenas de execução pro arquivo
#chmod +x teste.x

pronto
resolvido o problema de segurança...
creditos ao colaborador
Marcos Miras, tirei esta ideia de uma dica dele.

http://www.vivaolinux.com.br/dica/Compilar-shell-script
dêm uma olhada...


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.