Можно использовать следующие команды для того же:
openssl passwd -6 -salt xyz yourpass
Примечание: передача -1
генерирует пароль MD5, -5
SHA256 и -6
SHA512 (recommened)
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
На Ubuntu 12.04 есть mkpasswd (из пакета WHOIS): Перенапряженный передний конец для склепа (3)
mkpasswd -m sha-512 -S saltsalt -s <<< YourPass
где:
-M
= вычислять пароль с использованием метода типа. Если тип помогает, то доступные методы напечатаны. -S
= используется соль. E.g.
$ mkpasswd -m help
-s = Read password from stdin
Для тех, у кого нет систем на базе Debian. Python3 работает так же хорошо.
python3 -c 'import crypt, getpass; print(crypt.crypt(getpass.getpass()))'
getpass.getpass ()
предложит вам ввести пароль в командной строке.
Это решение имеет следующие преимущества:
Повторно запрашивает пароль, чтобы избежать ошибок.
$ python3 -c "from getpass import getpass; from crypt import *; \
p = getpass (); print ('\ n' + crypt (p, METHOD_SHA512)) \
if p == getpass ('Повторите:') else print ('\ nНе удалось повторить.') "
Еще один метод генерации паролей - использование инструмента openssl
.
Сгенерировать пароли MD5
openssl passwd -1 -salt SaltSalt SecretPassword
# output: $1$SaltSalt$FSYmvnuDuSP883uWgYBXW/
Сгенерировать пароли DES
openssl passwd -crypt -salt XR SuprScrt
# output: XR1dOp2EVMph2
Пара 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:::
Немного расширив критические замечания в адрес u150825 и Герта ван ден Берга, я обнаружил, что мне нужно что-то относительно гибкое для различных ситуаций с различными системами автоматизации. Я решил добавить в свою маленькую библиотеку полезных скриптов и написать это. Он использует только нативные библиотеки из python 2.7+ и точно так же работает на python3.
Вы можете забрать его здесь , если хотите. Так же легко добавить это в свою среду, если вам нужно часто его использовать, http-хостинг или что-то еще, и вы можете запустить его на любой платформе, используя любой доступный вам интерпретатор python по умолчанию, довольно надежно рассчитывая на его работу.
По умолчанию запрашивается с помощью getpass с подсказками на stderr (, что позволяет легко перехватывать stdout ), но если вы передаете ему строку, она будет просто пожинать со stdin. В зависимости от того, как вы это сделаете, он также может не отображаться в истории команд,так что просто осознавайте, с чем вы работаете. Мне нравится иметь гибкий инструмент, который будет вести себя ожидаемым образом, а не полагаться на пакеты или Python One -, прокладывающий мой путь к победе 10 разными способами.
В настоящее время у меня недостаточно репутации, чтобы комментировать. Я создал этот генератор паролей . Он использует метод № 1, описанный Рахулом Патилом.
Как отмечают многие комментаторы. Указание вашей соли, не говоря уже о вашем пароле, является проблемой безопасности, потому что это делает возможным повторное использование солей. Повторное использование солей делает атаки по радужным таблицам на хэши ваших паролей гораздо более осуществимыми, а также делает очевидными, какие пользователи обмениваются паролями друг с другом (, изолируя и выделяя, вероятно, менее безопасные пароли, такие как 123456 или qwertyuiop ).
Вы не должны указывать свой пароль в командной строке (, потому что он сохраняется в истории оболочки, и даже если он будет удален, он все еще может находиться некоторое время в свободном пространстве вашего диска, особенно если вы с использованием файловой системы COW ). Вы вообще не должны вручную указывать свою соль. Вы можете добиться этого, просто используя:
openssl passwd -6
(-6
указывает SHA512. Используйте -5
для SHA256. Избегайте -1
для MD5, если это возможно.)
OpenSSL дважды запросит у вас пароль через стандартный ввод и создаст случайную соль для каждого ввода.
chpasswd -e
, удостоверьтесь, что использовали одинарные кавычки на строке Выecho
в; иначе, если существует$
или другие специальные символы, их не будут рассматривать буквально. – Zags 15.10.2014, 22:28openssl passwd -1
который 1) не заканчивается там и 2) генерирует случайную соль для Вас (который не заканчивается в истории оболочки, ни одном). – Ztyx 22.09.2015, 15:20openssl passwd
documenation для любого пытающегося выяснять, что-1
опция делает. – CivFan 29.10.2015, 23:55python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
- от связанного вопроса – CivFan 30.10.2015, 00:47