¿Cómo agrupo el contenido de los archivos /etc/passwd y /etc/shadow en un archivo nuevo por nombre de usuario?

¿Cómo agrupo el contenido de los archivos /etc/passwd y /etc/shadow en un archivo nuevo por nombre de usuario?

Supongamos que tengo contenido en el archivo /etc/shadow como este:

root:!!:16087::::::
ftp:!!:14796::::::

y en un archivo /etc/passwd como este:

ftp:x:40:49:FTP account:/srv/ftp:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

Quiero agruparlos como:

ftp:!!:14796::::::x:40:49:FTP account:/srv/ftp:/sbin/nologin
root:!!:16087:::::::x:0:0:root:/root:/bin/bash

Lo que hice arriba:

Primero busqué el nombre de usuario del comando en ambos archivos y luego los concatené en una sola línea. Además, estoy eliminando el nombre de usuario de la segunda línea (como ya está presente al inicio, no es necesario 2 veces).

¿Cuál será el comando simple?

Respuesta1

Podrías usar la joinutilidad

sudo bash -c 'join -t: <(sort -t: -k1,1 /etc/shadow) <(sort -t: -k1,1 /etc/passwd)'

Respuesta2

Puede utilizar la herramienta Unshadow en la herramienta de descifrado de contraseñas de John The Ripper.

Para hacer esto, primero debe instalar John en su sistema.

Para hacer esto, vaya a su terminal y escriba el siguiente comando.

sudo apt-get install john

Después de instalar John, use unshadow de la siguiente manera:

sudo unshadow /etc/passwd /etc/shadow > $HOME/pwd.txt

Los datos que necesita estarán en un archivo de texto llamado pwd.txt en su carpeta de inicio.

información relacionada