Время от времени приходится менять пароли. Все знают, что хороший пароль должен включать большие и малые латинские буквы, цифры и специальные символы. При этом они не должны быть слишком короткими. И каждый раз придумывать их все труднее и труднее, особенно если использовать разные пароли на разных сервисах. Можно для этого использовать, например, программу pwgen или генератор, встроенный в keepassx. А можно написать простой генератор паролей на bash.
Используемые символы
Будем использовать следующие символы: Большие и малые буквы латинского алфавита (A-Z и a-z), цифры (0-9) и символы «!@#$%^&*()?/\[]{}-+_=<>.,». Такое сочетание обеспечит максимальную надежность.
Длина пароля
Длина пароля будет 16 символов. Если вам нужен более короткий пароль, то вы можете указать меньшую длину в скрипте, либо добавить опцию командной строки.
Скрипт-генератор паролей на bash
Самое первое, что нам необходимо — это переменная, содержащая все символы, которые мы будем использовать. Также нужна будет переменная, содержащая длину пароля и переменная для хранения самого пароля.
SYMBOLS="" for symbol in {A..Z} {a..z} {0..9}; do SYMBOLS=$SYMBOLS$symbol; done SYMBOLS=$SYMBOLS'!@#$%&*()?/\[]{}-+_=<>.,' # Строка со всеми символами создана. # Теперь нам надо в цикле с количеством итераций равным длине пароля # случайным образом взять один символ и добавить его в строку, содержащую пароль. PWD_LENGTH=16 # длина пароля PASSWORD="" # переменная для хранения пароля RANDOM=256 # инициализация генератора случайных чисел for i in `seq 1 $PWD_LENGTH` do PASSWORD=$PASSWORD${SYMBOLS:$(expr $RANDOM % ${#SYMBOLS}):1} done echo $PASSWORD
Вот и всё. Это весь скрипт. И с его помощью мы можем получить пароль, который удовлетворяет всем распространенным требованиям безопасности. Осталась только одна проблема — запомнить его.
Практический смысл в таком скрите весьма минимален. Это как в притче о чуваке, который всю жизнь учился ходить по воде, хотя можно просто использовать мост. Есть огромная куча сайтов для генерации паролей. А есть даже те, которые со своим API http://www.passwordrandom.com/Meter.aspx
Хотя, с точки зрения тренировки и практики — свой велосипед в пароледеланьи — вполне неплохая метода к профессиональному росту :)
Этот скрипт тут как раз с точки зрения тренировки. А вот сайтам для генерации паролей я бы не доверял, пожалуй. :)
Большое спасибо! Ваш скрипт пригодился. bash для автоматизации задач, одна из них — периодическая смена паролей.
Спасибо, пригодился для создания разово 200 юзеров
tr -dc A-Za-z0-9 < /dev/urandom | head -c 8 | xargs
Это хорошо, но где спецсимволы?
Максим привет! А как прикрутить к твоему генератору НЕ повторяющиеся Uppercase Letters и Lowercase Letters, а также пробелы в пароле?
Зы: Навеяно мотивами — http://www.passwordmeter.com/
К, примеру вот такой 26-ти значный пароль удоволетворяет требованиям сайта:
k Eu&V+Gz) $PiC@LqF-w%tYa2
Привет. Пробел просто добавить в список символов SYMBOLS, а на уникальность проверять можно, например, так:
if [[ passw = *${symbol}* ]] ...
А чего комменты не публикуются на сайте?
Премодерация :)
А как сгенерировать пароль случайным образом, но чтобы в нём всегда обязательно был минимум один спец-символ, цифра и буквы в разных регистрах? А то временами генерируется только буквенный пароль.
Я использую следующий код для генерации MySql пароля, но время от времени он не соответствует уровню MEDIUM (Your password does not satisfy the current policy requirements):
< /dev/urandom tr -dc '_A-Za-z0-9!@#$%^&*-_=+?;:' | head -c12
Можно попробовать так (если количество кода не смущает):