Мені потрібно вручну відредагувати, /etc/shadow
щоб змінити пароль root всередині зображення віртуальної машини.
Чи є інструмент командного рядка, який бере пароль і генерує /etc/shadow
сумісний хеш пароля у стандартному режимі?
Мені потрібно вручну відредагувати, /etc/shadow
щоб змінити пароль root всередині зображення віртуальної машини.
Чи є інструмент командного рядка, який бере пароль і генерує /etc/shadow
сумісний хеш пароля у стандартному режимі?
Відповіді:
Ви можете використовувати такі команди для тих же:
openssl passwd -6 -salt xyz yourpass
Примітка: при проходженні -1
буде створено пароль MD5, -5
SHA256 і -6
SHA512 (рекомендовано)
mkpasswd --method=SHA-512 --stdin
Методи приймає md5
, sha-256
іsha-512
Як @tink запропонував, ми можемо оновити пароль, chpasswd
використовуючи:
echo "username:password" | chpasswd
Або ви можете використовувати зашифрований пароль за допомогою chpasswd
. Спочатку згенеруйте його за допомогою цього:
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
Потім пізніше ви можете використовувати створений пароль для оновлення:
echo "username:encryptedPassWd" | chpasswd -e
Цей зашифрований пароль, який ми можемо використовувати для створення нового користувача з паролем, наприклад:
useradd -p 'encryptedPassWd' username
openssl passwd -1
який 1) не закінчується там і 2) генерує випадкову сіль для вас (яка не закінчується і в історії оболонок, ні).
openssl passwd
документування для тих, хто намагається з'ясувати, що -1
робить варіант.
python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
- із пов’язаного питання
У Ubuntu 12.04 є mkpasswd (з пакету whois): Перенапружений передній кінець для склепіння (3)
mkpasswd -m sha-512 -S saltsalt -s <<< YourPass
Де:
-m
= Обчислити пароль, використовуючи метод TYPE. Якщо TYPE допоможе, друкуються доступні методи.-S
= використана сіль.Напр
$ mkpasswd -m help
-s = Read password from stdin
Це рішення має такі переваги:
Повторно запитайте пароль, щоб уникнути помилок.
$ python3 -c "from getpass import getpass; from crypt import *; \
p=getpass(); print('\n'+crypt(p, METHOD_SHA512)) \
if p==getpass('Please repeat: ') else print('\nFailed repeating.')"
Для тих, хто не базується на системах Debian. Python3 працює так само добре.
python3 -c 'import crypt; print(crypt.crypt("test"))'
ПРИМІТКА . Рядок "тест" - це пароль, який ми створюємо як зашифрований рядок.
crypt.mksalt
не працює при генерації паролів для /etc/shadow
. Але метод @ Alex131089 працює!
openssl
є досить універсальним інструментом.
Жоден із поточних методів для мене не прийнятний - вони або передають пароль у командному рядку (який закінчується в історії моєї оболонки), вимагають встановлення додаткових утиліт ( python3
, makepasswd
), використання жорстко кодованих солей або використання старих методів хешування.
Цей метод генерує хеши SHA-512 після запиту пароля та використовує випадкову сіль.
Метод, що використовує Python 2 без будь-яких нестандартних бібліотек:
python2 -c 'import crypt, getpass,os,base64; print crypt.crypt(getpass.getpass(), "$6$"+base64.b64encode(os.urandom(16))+"$")'
Щоб зробити це без підказки: (Це залишить ваш пароль в історії команд)
python2 -c 'import crypt, os,base64; print crypt.crypt("MyPassword", "$6$"+base64.b64encode(os.urandom(16))+"$")'
ps
висновку у частку секунди, що команда працює. (Найбезпечнішим залишається користуватися версією, яка вимагає ввести пароль)
openssl
І chpasswd -e
пара не працює в моєму випадку в RHEL6. Об’єднання openssl passwd
та usermod -p
командування зробили цю роботу.
Створіть хеш-значення пароля разом із значенням солі:
$ openssl passwd -1 -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.
Потім скопіюйте зашифрований рядок у usermod. Не забудьте обернути його окремими цитатами.
$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root
Перевірте це у тіньовому файлі.
$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::
Ще один метод генерування паролів - це використання openssl
інструменту.
Створення паролів MD5
openssl passwd -1 -salt SaltSalt SecretPassword
# output: $1$SaltSalt$FSYmvnuDuSP883uWgYBXW/
Створення паролів DES
openssl passwd -crypt -salt XR SuprScrt
# output: XR1dOp2EVMph2
Трохи розкриваючи критику щодо u150825 та Герта ван ден Берга, я виявив потребу в чомусь відносно гнучкому для різних ситуацій із різними системами автоматизації. Я вирішив додати до власної маленької бібліотеки корисних сценаріїв і написати це. Він використовує лише рідні бібліотеки з python 2.7+ та працює також на python3.
Ви можете забрати його тут, якщо хочете. Це так само просто відпустити це у вашому оточенні, якщо вам потрібно використовувати його багато, розміщений http або що завгодно, і ви можете запустити його на будь-якій платформі, використовуючи будь-який доступний для вас інтерпретатор пітонів за замовчуванням, досить надійно розраховуючи, що він працює.
Він за замовчуванням використовує запит на використання getpass із підказками на stderr (що дозволяє легко захопити stdout), але якщо ви покладете рядок до нього, він буде просто зібраний з stdin. Залежно від того, як ви будете займатися цим, це може не відображатися в історії команд, тому просто знайте, з чим ви працюєте. Мені подобається мати гнучкий інструмент, який буде вести себе очікуваним способом, а не сподіватися на пакети чи пітон, що підкреслюють мою дорогу до перемоги 10 різних способів.
chpasswd
?
chpasswd -e
обов'язково використовуйте одинарні лапки в рядку, в якому виecho
знаходитесь; в іншому випадку, якщо є$
чи інші спеціальні символи, вони не будуть розглядатися буквально.