Как сгруппировать содержимое файлов /etc/passwd и /etc/shadow в новый файл по имени пользователя?

Как сгруппировать содержимое файлов /etc/passwd и /etc/shadow в новый файл по имени пользователя?

Предположим, у меня есть следующее содержимое файла /etc/shadow:

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

и в файле /etc/passwd вот так:

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

Я хочу сгруппировать их следующим образом:

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

Что я сделал выше:

Сначала я нашел имя пользователя команды из обоих файлов, а затем объединил их в одну строку. Также я удаляю имя пользователя из второй строки (так как оно уже присутствует в запуске, поэтому оно не нужно 2 раза).

Какая будет простая команда?

решение1

Вы можете использовать joinутилиту

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

решение2

Вы можете использовать инструмент unshadow в инструменте расшифровки паролей John The Ripper

Для этого вам сначала нужно установить John в свою систему.

Для этого перейдите в терминал и введите следующую команду.

sudo apt-get install john

После установки John используйте unshadow следующим образом:

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

Необходимые вам данные будут находиться в текстовом файле с именем pwd.txt в вашей домашней папке.

Связанный контент