При написании скриптов на Bash для автоматизации создания нового пользователя Linux так, как например описано в → этой статье (с помощью команды useradd
) не достаточно просто передать пароль в эту команду. Передаваемый пароль должен быть зашифрован. Иначе, при создании нового пользователя, значение его пароля будет сохранено «как есть», а при попытке входа этого пользователя в систему, пароль будет кодироваться. И пользователь не сможет залогиниться так как обычно закодированный вариант пароля и его вводимое значения не совпадают. В этой статье подробно рассмотрим, как передавать в систему закодированную версию пароля пользователя.
Какой пароль пользователя нужен для команды useradd
в Линукс
Для начала разберёмся с тем, какой пароль пользователя нужен для команды useradd
в Debian. Для этого, как было подробно рассмотрено в статье по ссылке во вступлении, посмотрим мануал этой команды и увидим, что опция -p, необходимая для передачи пароля, требует:
-p, --password PASSWORD encrypted password of the new account
зашифрованного варианта ввода пароля.
Значит, то, что нужно передать в систему должно быть сначала зашифровано. Сразу покажу, как это сделать, а потом накидаю, куда смотреть, если понадобятся подробности.
Команда для шифрования пароля пользователя в Linux
Итак, зашифровать пользователь в том виде, в котором он требуется для правильной работы с авторизацией пользователей в Линукс, можно таким способом:
encpass=$(openssl passwd -crypt ТУТпароль)
В примере выше, зашифрованная версия пароля сохранится в переменной encpass
.
Для шифрования используется функция openssl
с параметрами passwd
и -crypt
, ну и, собственно, передаётся само значение пароля в не зашифрованном виде.
Подробное описание функции openssl
можно прочитать в мануале, вызвав его man openssl
.
Краткую подсказку по функции openssl
можно получить, введя openssl help
. При этом будет выдан список стандартных и прочих команд по управлению процессом шифрования.
Резюме
Более подробно рассматривать разные режимы шифрования, их алгоритмы, принципы передачи и хранения данных, мне пока не интересно. Самое главное — вопрос, как создавать пользователя, передавая значение его пароля в систему через переменную, рассмотрен, опробован и оказался работоспособен.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)