Como agrupo o conteúdo dos arquivos /etc/passwd e /etc/shadow em um novo arquivo por nome de usuário?

Como agrupo o conteúdo dos arquivos /etc/passwd e /etc/shadow em um novo arquivo por nome de usuário?

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 joinutilitá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.

informação relacionada