Trocar senha de root NO BRACO remotamente

Publicado por Elgio Schlemer 07/08/2007

[ Hits: 11.429 ]

Homepage: http://gravatai.ulbra.tche.br/~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 [email protected]${Ip} 2>/dev/null
   echo "Senha trocada no servidor $Ip"
done
# FIM

Scripts recomendados

Tux Colorido

Script Para desligar o Debian

Algoritmo para calcular notas com array

Substituir strings em arquivos ascII

Protegendo arquivos contra acessos simultâneos


  

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 [email protected]$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