show entrou com nova senha no comando unix “passwd”

3

É possível executar o comando passwd com uma opção para mostrar as senhas recém-inseridas? Por padrão, ele não mostra o que eu digito e não quero isso.

[dave@hal9000 ~]$ passwd 
Changing password for user dave.
Changing password for dave.
(current) UNIX password: 
New password: bowman
Retype new password: bowman
passwd: all authentication tokens updated successfully.
    
por Kompi 15.05.2014 / 02:28

2 respostas

5

Se você realmente quiser seguir esse caminho e não houver um parâmetro passwd , poderá usar este Espere roteiro:

#!/usr/bin/env expect -f
set old_timeout $timeout
set timeout -1

stty -echo
send_user "Current password: "
expect_user -re "(.*)\n"
set old_password $expect_out(1,string)

stty echo
send_user "\nNew password: "
expect_user -re "(.*)\n"
set new_password $expect_out(1,string)

set timeout $old_timeout
spawn passwd
expect "password:"
send "$old_password\r"
expect "password:"
send "$new_password\r"
expect "password:"
send "$new_password\r"
expect eof

Como funciona:

[dave@hal9000 ~]$ ./passwd.tcl
Current password: 
New password: bowman
spawn passwd
Changing password for user dave.
Changing password for dave.
(current) UNIX password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

Este shell script também pode funcionar (testado no Fedora 20 com bash-4.2.47-2 e passwd-0.79-2):

#!/bin/sh
stty -echo
echo -n "Current password: "
read old_password

stty echo
echo
echo -n "New password: "
read new_password

passwd << EOF
$old_password
$new_password
$new_password
EOF

Como funciona:

[dave@hal9000 ~]$ ./passwd.sh
Current password: 
New password: bowman
Changing password for user dave.
Changing password for dave.
(current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully.
    
por 15.05.2014 / 05:21
4

Você não está completamente claro sobre o que exatamente você está tentando ver ... sua própria senha? Alguém mais?

Se bem me lembro, até mesmo o sistema operacional não conhece sua senha porque ela está em hash. Você pode limpar uma senha do arquivo shadow, efetivamente apagando-a (inicializando a partir de outro disco de inicialização, geralmente) e redigitar a senha, mas capturar a senha real implicaria em quebrar a string com hash ... brute forçando ou usando uma senha ataque de dicionário, tabelas de arco-íris ou algo parecido. Vou deixar a mecânica para o seu Google-fu.

Então, em resumo; não, você não pode recuperar a senha sem interceptar e gravar as teclas digitadas, mas pode apagar a senha se tiver acesso físico à unidade (ou imagem).

EDIT: Ah, esclareceu para mostrar o que você está digitando enquanto você digita. Mais uma vez, não, em qualquer versão que eu conheça. Eu acredito que isso é para evitar surfar no ombro; pessoas olhando por cima do ombro enquanto você digita ou visualizando remotamente sua exibição enquanto você digita.

Se você quiser contorná-lo (se estiver usando uma GUI, por exemplo), pode recortar e colar sua string de texto no prompt, embora isso normalmente seja um problema. Depende de por que você está desejando ecoar seu texto (por que se preocupar em digitar duas vezes a senha, se você puder ver o que está digitando ... esse foi o ponto de ter que redigitar sua senha, para reduzir os erros de digitação).

Dependendo de como sua versão do Linux funciona, eu suponho que você poderia tentar codificar diretamente uma string de senha e inserir o hash resultante no arquivo shadow ... uma solução estranha, mas que pode funcionar. Ou você pode encontrar uma solução alternativa em que você tem um módulo PAM autenticado em um sistema / banco de dados diferente que você pode alterar mais diretamente. Mas qualquer coisa que revele sua senha em algum momento através de texto simples é meio que pedir problemas do ponto de vista da segurança ... você precisaria decidir quanto risco está disposto a assumir.

    
por 15.05.2014 / 02:56