Библиотека сайта rus-linux.net
Десять способов генерировать пароль в командной строке случайным образом
Оригинал: 10 Ways to Generate a Random Password from the Command LineАвтор: Lowell Heddings
Дата публикации: December 20 2014
Перевод: Н.Ромоданов
Дата перевода: февраль 2015 г.
Одной из важных особенностей Linux является то, что вы можете делать одно и то же сотней различных способов, например, случайным образом генерировать пароль, и это можно делать с помощью десятка различных команд. В статье описываются десять способов, с помощью которых вы можете это сделать.
Мы взяли все эти команды с сайта Command-Line Fu и для того, чтобы убедиться, что они работают, протестировали их на нашем компьютере с Linux. У вас в Windows с установленным пакетом Cygwin некоторые из них должны работать, хотя их все мы в такой ситуации не тестировали — протестировали лишь последний вариант и он определенно работает.
Генерация паролей случайным образом
В случае, если вам не нужен длинный пароль, то в любой из описываемых ниже команд, вы можете так изменить команду, чтобы она выдавала пароль другой длины, либо можете просто взять первые x символов сгенерированного пароля. Надеюсь, что в любом случаете вы пользуетесь менеджером паролей, например, LastPass для того, чтобы пароли не требовалось запоминать.
В следующем методе используется алгоритм SHA для хэширования даты, затем вычисляется base64, а затем берутся первые 32 символа.
date +%s | sha256sum | base64 | head -c 32 ; echo
В следующем методе применяется встроенная возможность /dev/urandom и отфильтровываются только те символы, которые вы обычно используете в пароле. Затем выводятся первые 32 символа.
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
В следующем примере применяется функция rand из пакета openssl, который, возможно, не установлен в вашей системе. Хорошо, что есть еще много других примеров, не так ли?
openssl rand -base64 32
Следующий пример аналогичный, но в нем используется функция urandom, с помощью которой выполняется обратная операция. Bash является очень мощным инструментом!
tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
Вот еще один пример, использующий фильтры в командной строке; в нем строки берутся из файла, который в данном случае создается с помощью функции urandom.
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
Ниже более простой вариант использования функции urandom.
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
В следующем примере применяется очень полезная команда dd.
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
Можно даже создавать случайный «левосторонний» пароль, который можно было бы вводить одной рукой.
</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""
Если вы постоянно собираетесь пользоваться одним из этих методов, то, вероятно, лучше всего оформить его в виде функции. В этом случае, как только вы один раз выполните следующую команду, вы сможете в любой момент с помощью команды randpw создать случайный пароль. Вы, вероятно, захотите, записать эту команду в виде файла ~/.bashrc.
randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}
Вы можете использовать аналогичный синтаксис для того, чтобы выполнить внутри функции что-нибудь другое - просто замените все внутри скобок { }.
А вот самый простой способ создать в пароль в командной строке, который работает в Linux, в Windows с Cygwin, и, вероятно, в Mac OS X. Я уверен, что некоторые скажут, что это не столь случайный пароль, как в других вариантах, но, честно говоря, подобной «случайности» вполне достаточно в случае, если вы собираетесь использовать пароль целиком.
date | md5sum
Да, эту команду даже достаточно легко запомнить.
Есть множество других способов, с помощью которых вы можете в командной строке Linux создать пароль случайным образом, например, с помощью команды mkpasswd, с помощью которой можно, в действительности, назначать пароль учетной записи пользователя Linux. А какой ваш любимый способ?