Предположим, у меня есть следующее содержимое файла /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 в вашей домашней папке.