Trocar senha de root NO BRACO remotamente

Publicado por Elgio Schlemer 07/08/2007

[ Hits: 12.368 ]

Homepage: https://profelgio.duckdns.org/~elgio

Download trocasenha.sh




Este script foi parte de uma resposta a uma pergunta de como trocar a senha remotamente, via ssh, sem precisar digitá-la.

O problema é que o passwd aguarda que se digite duas vezes a senha e não aceita por entrada padrão e nem por parâmetro. A solução, meio suja, foi editar remotamente na mão o /etc/shadow

  



Esconder código-fonte

#!/bin/bash

# Script para trocar senha remotamente (do root) via ssh

# Nova Senha
SENHA="teste123"

# Gerando o HASH Md5 desta senha (usado no Linux)
HASHMD5="`mkpasswd -H md5 $SENHA`"

# Como o binario passwd exige que se digite a senha duas
# vezes e nao aceita entrada padrao e nem parametros,
# a ideia eh editar MANUALMENTE o /etc/shadow, plantando
# o HASH do root no lugar certo

# Arquivo de hash temporario
TEMP="/tmp/novoSHADOW"

# Agora este escript faz BACKUP do /etc/shadow
# O backup sera salva com o nome /etc/shadow-ANODIAMES-SEGUNDOS
BACKUP="/etc/shadow-`date "+%y%m%d-%s"`"

echo $HASHMD5

# Arquivo com numeros IPs?
if [ -f servidores.txt ]
then
   SERVIDORES="`cat servidores.txt`"
else
   SERVIDORES="192.168.0.3 192.168.0.2"
fi
# Agora vem o ssh. Neste caso quem executar o script devera
# digitar a senha de login antiga do ssh, a menos que se
# esteja realizando autenticacao via chave publica (sem senha)
for Ip in $SERVIDORES
do
echo "Tentando trocar a senha em $Ip"
(
   cat << END
   cp /etc/shadow $BACKUP
   echo -n 'root:${HASHMD5}:' > $TEMP
   grep "^root:" /etc/shadow | cut -d: -f3- >> $TEMP
   grep -v "^root:" /etc/shadow >> $TEMP
   mv -f $TEMP /etc/shadow
END
)|ssh root@${Ip} 2>/dev/null
   echo "Senha trocada no servidor $Ip"
done
# FIM

Scripts recomendados

Dê utilidade aquelas teclas que não servem pra nada do seu teclado

MySQL remote root

Script completo de firewall

Script para autenticar Speedy Business

Multiplicacao de vetores


  

Comentários
[1] Comentário enviado por removido em 08/08/2007 - 12:42h

Paguei um pau para a criatividade. Boa mesmo!

[2] Comentário enviado por VictorRades em 08/08/2007 - 16:15h

echo -n <senha> | passwd --stdin [usuario]

[3] Comentário enviado por elgio em 08/08/2007 - 16:34h

Desconheço este parâmetro do passwd. Ele NÃO EXISTE!

Só se tu estás usando uma versão alternativa do passwd no teu slackware.
Nem o do FreeBSD tem este comportamento.

[4] Comentário enviado por maniac em 10/08/2007 - 11:14h

aki nao funciono

[5] Comentário enviado por VictorRades em 10/08/2007 - 15:27h

Opção inserida na base do redhat.

[6] Comentário enviado por fernandomerces em 04/02/2011 - 01:21h

Elgio, na minha opinião é uma gambi MUITO legal. Parabéns! :)

[7] Comentário enviado por Tacioandrade em 02/04/2013 - 17:59h

Amigo muito bom seu script, no caso estou precisando fazer algo parecido, modificar a senha de vários usuários de um servidor (com os nomes deles em um arquivo), porem não está funcionando, será que você poderia me ajudar. Segue o meu script.

TEMP="/tmp/novoSHADOW"

for line in $(cat /root/users); do
echo -n '$(line):3e07wfVPM39Oo:' > $TEMP
grep "^$(line):" /root/shadow | cut -d: -f3- >> $TEMP
grep -v "^$(line):" /root/shadow >> $TEMP
mv -f $TEMP /root/shadow1
done

No arquivo /root/users, segue o seguinte padrão:

cobrancalsa
gil
roseli
vinicius
franfrio
franfrios
conexao
mail
gilsonecialtda
patriciaoliveira
pbola


Caso possa me ajudar agradeço muito. =)

[8] Comentário enviado por bkammers em 15/10/2015 - 19:00h

A princípio, existe uma maneira mais simples.

INDIVIDUAL (Testei em Ubuntu e CentOS)

---------------------------------------------------------------------
#!/bin/bash

# AutomaticPasswd
# Bruno Kammers - 15/10/2015

# Coloque sua senha nova aqui
PASS="xxxxxxx"

(echo $PASS ; echo $PASS) | passwd USUARIO
---------------------------------------------------------------------


--------------------------------------------------------------------------------------------------------------------------------------------


DIVERSAS MAQUINAS (NÃO TESTEI AINDA, MAS É ESSE O CAMINHO...)

---------------------------------------------------------------------
#!/bin/bash

# AutomaticPasswdMulti
# Bruno Kammers - 15/10/2015

# Coloque sua senha nova aqui
PASS="xxxxxxx"

for i in `cat servers.txt` ; do
ssh root@$i '(echo $PASS ; echo $PASS) | passwd USUARIO'
done
---------------------------------------------------------------------

Neste caso, criar um arquivo servers.txt no mesmo path onde salvou este script, contendo os ips que deseja alterar;

Será solicitado a senha para cada conexão, a não ser que você tenha configurado chaves de permissão...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts