Suponha que eu tenha conteúdo no arquivo /etc/shadow assim:
root:!!:16087::::::
ftp:!!:14796::::::
e no arquivo /etc/passwd assim:
ftp:x:40:49:FTP account:/srv/ftp:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
Quero agrupá-los como:
ftp:!!:14796::::::x:40:49:FTP account:/srv/ftp:/sbin/nologin
root:!!:16087:::::::x:0:0:root:/root:/bin/bash
O que eu fiz acima:
Primeiro encontrei o nome de usuário do comando no arquivo e, em seguida, concatenei-os em uma única linha. Além disso, estou excluindo o nome de usuário da segunda linha (como já está presente na inicialização, não é necessário 2 vezes).
Qual será o comando simples?
Responder1
Você poderia usar o join
utilitário
sudo bash -c 'join -t: <(sort -t: -k1,1 /etc/shadow) <(sort -t: -k1,1 /etc/passwd)'
Responder2
Você pode usar a ferramenta unshadow na ferramenta de descriptografia de senha John The Ripper
Para fazer isso você deve primeiro instalar o John em seu sistema.
Para fazer isso, vá ao seu terminal e digite o seguinte comando.
sudo apt-get install john
Depois de instalar John, use unshadow da seguinte maneira,
sudo unshadow /etc/passwd /etc/shadow > $HOME/pwd.txt
Os dados necessários estarão em um arquivo de texto chamado pwd.txt em sua pasta pessoal.