Вы можете использовать следующие команды для одного и того же:
Метод 1 (MD5, Sha256, Sha512)
openssl passwd -6 -salt xyz yourpass
Примечание: при прохождении -1
будет создан пароль MD5, -5
SHA256 и -6
SHA512 (рекомендуется)
Метод 2 (MD5, Sha256, Sha512)
mkpasswd --method=SHA-512 --stdin
Методы принимает md5
, sha-256
иsha-512
Метод 3 (des, md5, sha256, sha512)
Как предложил @tink, мы можем обновить пароль, chpasswd
используя:
echo "username:password" | chpasswd
Или вы можете использовать зашифрованный пароль с chpasswd
. Сначала сгенерируйте это, используя это:
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
Затем позже вы можете использовать сгенерированный пароль для обновления:
echo "username:encryptedPassWd" | chpasswd -e
Этот зашифрованный пароль мы можем использовать для создания нового пользователя с паролем, например:
useradd -p 'encryptedPassWd' username
chpasswd -e
обязательно используйте одинарные кавычки в строке, в которой вы находитесьecho
; в противном случае, если есть$
или другие специальные символы, они не будут рассматриваться буквально.openssl passwd -1
который 1) не заканчивается там и 2) генерирует случайную соль для вас (которая также не попадает в историю оболочки).openssl passwd
документация для тех, кто пытается выяснить, что-1
делает опция.python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
- из соответствующего вопроса ServerFaultВ Ubuntu 12.04 есть mkpasswd (из пакета whois): переизбыток внешнего интерфейса в crypt (3)
Где:
-m
= Вычислить пароль, используя метод TYPE. Если TYPE - справка, доступные методы выводятся на печать.-S
= соль используется.Например
источник
Это решение имеет следующие преимущества:
Повторно запрашивает пароль, чтобы избежать ошибок.
Рекомендации
источник
Для тех, у кого нет систем на основе Debian. Python3 работает так же хорошо.
ПРИМЕЧАНИЕ . Строка «test» - это пароль, который мы генерируем в виде зашифрованной строки.
источник
crypt.mksalt
не работает при генерации паролей для/etc/shadow
. Но метод @ Alex131089 работает!openssl
является довольно универсальным инструментом.Ни один из существующих методов не является приемлемым для меня - они либо передают пароль в командной строке (которая заканчивается в истории моей оболочки), требуют установки дополнительных утилит (
python3
,makepasswd
), используют жестко запрограммированные соли или используют старые методы хеширования.Этот метод генерирует хэши SHA-512 после запроса пароля и использует случайную соль.
Метод, использующий Python 2 без каких-либо нестандартных библиотек:
Чтобы сделать это без приглашения: (Это оставит ваш пароль в истории команд)
источник
ps
выходных данных в доли секунды, в течение которых выполняется команда. (Самым безопасным остается использовать версию, запрашивающую пароль)openssl
Иchpasswd -e
пара не работает в моем случае в RHEL6. Объединениеopenssl passwd
иusermod -p
командование сделали свое дело.Сгенерируйте хеш-значение пароля вместе со значением соли:
Затем скопируйте зашифрованную строку в usermod. Обязательно заключите его в одинарные кавычки.
Проверьте это в теневом файле.
источник
Еще один метод генерации паролей, это использование
openssl
инструмента.Генерация паролей MD5
Генерация паролей DES
источник
Разобравшись немного с критикой u150825 и Герта ван ден Берга, я обнаружил, что мне нужно что-то относительно гибкое для разных ситуаций с разными системами автоматизации. Я решил добавить в свою небольшую библиотеку полезных скриптов и написать это. Он использует только нативные библиотеки из python 2.7+ и работает на python3 также.
Вы можете забрать его здесь, если хотите. Так же легко отказаться от этого в вашей среде, если вам нужно много использовать его, размещать http или что-то еще, и вы можете запустить его на любой платформе, используя любой интерпретатор Python по умолчанию, который у вас есть. надежно рассчитывает на это работающий.
По умолчанию он запрашивает использование getpass с приглашениями на stderr (что позволяет легко перехватить стандартный вывод), но если вы передадите ему строку, он просто будет извлечен из стандартного ввода. В зависимости от того, как вы это делаете, это может не отображаться в истории команд, поэтому просто знайте, с чем вы работаете. Мне нравится иметь гибкий инструмент, который будет вести себя ожидаемым образом, а не полагаться на пакеты или Python, выстраивающий путь к победе 10 различными способами.
источник
chpasswd
?