Назад | Перейти на главную страницу

Показать зашифрованную строку для пользователя ironman из файла / etc / shadow

Я создал пользователя и хочу зашифровать строку для этого пользователя из файла / etc / shadow. Как я могу это сделать

Хеширование пароля пользователя является односторонней операцией, вы можете хешировать пароль в виде простого текста и получить хеш.

Однако по заданному хешу вы не можете восстановить исходный пароль в виде обычного текста.

Также, если два пароля имеют одинаковый хэш, они одинаковы, но из-за засолка, разные хэши не гарантируют, что пароли разные.

При этом, чтобы увидеть хэш заданного пароля в виде простого текста, вы можете

  • создать тестового пользователя (sudo useradd test),
  • затем измените их пароль (sudo passwd test),
  • проверьте хеш, который был написан в /etc/shadow (sudo grep test /etc/shadow)
  • и, наконец, удалите вновь созданного пользователя по соображениям безопасности (sudo userdel test)

Лучше сделать это на автономном сервере, чтобы то короткое время, когда тестовый пользователь существует с известным или простым паролем, нельзя было использовать для взлома системы.

Есть несколько способов сделать это. Если у вас есть getent -

 sudo getent shadow username | cut -f2 -d:
  • Sudo - Запуск от имени root - нам нужно быть root, чтобы прочитать теневой пароль.
  • getent shadow username - получает строку теневого пароля для имени пользователя
  • cut -f 2 -d: "получает второе поле в файле с разделителями табуляции, которое представляет собой зашифрованный пароль.

Если у вас нет getent, вы можете повлиять на то же самое с помощью grep

sudo grep "^username:" /etc/shadow  | cut -f2 -d":"

Идея здесь состоит в том, чтобы использовать grep для получения требуемой строки, которая имеет эффект, аналогичный getent. "^" перед именем пользователя означает, что строка должна начинаться с имени пользователя. Знак ":" в конце - это разделитель полей. Это так, если у вас несколько похожих пользователей, только 1 будет соответствовать. (т.е. myusername и username4me не совпадают).

В glibc есть программа для этого:

getent shadow ironman

Выводит строку с разделителями, содержащую хешированный пароль. Требуется запуск с привилегиями. Работает, даже если пользователь находится не в файлах, а в чем-то вроде LDAP, согласно nsswitch.conf.

Помните, что хешированные пароли со временем могут быть взломаны. Измените любой пароль, хэш которого мог увидеть кто угодно, кроме установившего его пользователя и системных администраторов.