Я использую это для установки паролей в скрипте:
usermod -p `mkpasswd -H md5 passwordText` user
Мне нужно создать исключение в моем скрипте, на случай, если эта команда не удастся. В каком файле содержится зашифрованный пароль и как я могу отменить шифрование, чтобы я мог проверить, правильно ли оно было записано в файл?
Редактировать: Я наконец обнаружил проблему со строкой выше. Пароль разрешал символы, которые интерпретировались как символы подстановки в командной строке, создавая впечатление, что сама команда не выполнена. Тем не менее, это привело меня к новым вещам, которые я рад, что теперь знаю.
Вместо обращения к теневому файлу, почему бы просто не сделать:
usermod -p `mkpasswd -H md5 passwordText` user
if [ $? -ne 0 ]; then
echo "Changing password failed!!!!!!"
fi
Вы можете заменить все, что хотите в блоке if
, но если команда когда-нибудь не удалась для usermod
, то она верну ненулевой статус.
Пароль хранится в /etc/shadow
и можно попытаться подтвердить это с Джоном превосходный человек.
Я не уверен, позволяются ли отправляющие учебные руководства для Джона здесь, раз так я могу записать тот достаточно легко, но если не поиск Google покажет Вам как.
В последний раз я смотрел, John был нужен патч, но отчет об ошибках на панели запуска, казалось, указал, что патч был включен в repos, таким образом, я попробую неисправленную версию сначала (я знаю, ленивый =)).
За исключением Джона, su - test_user
-> вводят пароль.
Информируйте учебное руководство о Джоне превосходный человек:
Установка Джон
sudo apt-get install john
Подготовьте рабочую базу данных (я сделал пользователя "тестом" со слабым паролем для этого примера).
sudo unshadow /etc/passwd /etc/shadow > password.db
Выполните Джона
john password.db
Loaded 2 password hashes with 2 different salts (generic crypt(3) [?/64])
Remaining 1 password hash
guesses: 0 time: 0:00:00:03 0% (2) c/s: 222 trying: monday - emily
Как Вы видите, Джон взломал слабый пароль за 0,03 секунды, мой пароль пользователя слишком силен для Джона, таким образом, я прервал его с Crtl + c
Покажите пароль
john --show password.db
test:testing:1001:1001:,,,:/home/test:/bin/bash
1 password hash cracked, 1 left
Здесь мы видим пользователя "тест" с паролем "тестирование"
su test
Password:
test@ufbt:/home/test