Как мне зашифровать пароль нового пользователя, используя команду useradd?

Вопрос или проблема

Я хотел бы создать зашифрованный пароль для входа для нового пользователя, используя команду useradd в CLI. Я знаю, что использование опции -p позволит мне установить пароль, но эта опция не шифрует пароль. Я также знаю, что могу создать зашифрованный пароль с помощью команды passwd [имя_пользователя] отдельно после создания нового пользователя через useradd, но, как я уже говорил, я хотел бы узнать, как создать зашифрованный пароль через команду useradd.

Вы можете избежать всей этой головной боли с паролями, создаваемыми администратором, создав userid, а затем использовав passwd --expire для него. Из man passwd:

   -e, --expire
       Немедленно аннулировать пароль учетной записи. Это, по сути,
       может заставить пользователя изменить свой пароль при следующем входе.

Можно использовать Perl:

perl -e "print crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"

Или Python с модулем crypt:

python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"
  • foo: пароль для шифрования
  • $6: тип шифрования, в данном случае SHA-512
  • $(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32): соль для шифрования, в данном случае случайная строка из 32 символов.

В сочетании с useradd:

useradd [...] -p"$(perl -e "print crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")")" [...]

Или:

useradd [...] -p"$(python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")")" [...]

Поскольку passwd не поддерживает --stdin в Ubuntu, вы можете попробовать это:

perl -e "print crypt('password','sa');"

см. https://administratosphere.wordpress.com/2011/06/16/generating-passwords-using-crypt3/

Вы можете использовать “useradd -p ЗАШИФРОВАННЫЙ-пароль”, вам нужен весь пароль, включая определение типа шифрования, и вам нужно экранировать все $’s, кроме этого, это кажется работает нормально.

Просто создайте случайного, временного пользователя, установите его пароль на тот, который хотите использовать, затем скопируйте его пароль из файла shadow, скопируйте все от первого до второго “:” в файле shadow и используйте это после -p.

Вы можете использовать openssl следующим образом:

encrypted=`echo $password | openssl passwd -6 -stdin`

По соображениям безопасности вы также можете захотеть очистить значение переменной как можно скорее:

password=

Хотя я не думаю, что это как-то изменит ситуацию.

В конце концов используйте переменную encrypted в командной строке useradd:

... --password "$encrypted" ...

Следующее сработало для меня в Ubuntu 18.04 LTS:

echo 'your_password' > /tmp/pw.txt
pw="$(makepasswd --crypt-md5 --clearfrom=/tmp/pw.txt)"
sudo useradd -p "${pw}" your_username
rm -f /tmp/pw.txt

Для этого может потребоваться предварительная установка makepasswd, используя (в Ubuntu или Debian; ищите в Google для других дистрибутивов):

sudo apt install makepasswd

Команда для создания зашифрованного пароля – ‘mkpasswd’.

С паролем “PASSWORD” вы бы выполнили ‘mkpasswd PASSWORD’.

useradd –password “$(mkpasswd PASSWORD)” <другие флаги и имя пользователя здесь>

Ответ или решение

Создание нового пользователя с зашифрованным паролем в Linux, используя команду useradd, может показаться сложной задачей. Однако, с помощью различных инструментов и подходов, это можно сделать эффективно и безопасно. В этой статье мы подробно рассмотрим, как можно зашифровать пароль пользователя, используя команду useradd.

Шаг 1: Понимание шифрования паролей

Ключевым моментом является то, что команда useradd позволяет задавать параметр -p для указания пароля пользователя, но этот пароль должен быть уже зашифрован. В большинстве систем Linux используются различные алгоритмы шифрования, такие как SHA-512.

Шаг 2: Генерация зашифрованного пароля

Перед тем, как использовать команду useradd, необходимо сгенерировать зашифрованный пароль. Это можно сделать с помощью скриптов на Python или Perl, либо утилит, таких как openssl или makepasswd.

Способ 1: Использование Perl

Вы можете использовать Perl для генерации зашифрованного пароля следующим образом:

encrypted=$(perl -e "print crypt('your_password', '\$6\$$(< /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$')")

В этом примере ваш пароль будет зашифрован с использованием алгоритма SHA-512.

Способ 2: Использование Python

Если вам больше нравится Python, можно использовать следующий код:

encrypted=$(python -c "import crypt; print(crypt.crypt('your_password', '\$6\$$(< /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$'))")

Способ 3: Использование OpenSSL

С помощью openssl шифрование может быть выполнено следующим образом:

encrypted=$(echo $password | openssl passwd -6 -stdin)

Не забудьте очистить переменную password после использования для повышения безопасности:

password=

Шаг 3: Создание нового пользователя с зашифрованным паролем

После того как вы получили значение переменной encrypted, можно создать нового пользователя, используя команду useradd:

sudo useradd -m -p "$encrypted" new_username
  • -m создает домашний каталог пользователя.
  • new_username – имя нового пользователя.

Шаг 4: Проверка конфигурации пользователя

После выполнения команды вы можете проверить, был ли пользователь успешно создан, и правильный ли у него зашифрованный пароль:

sudo passwd -S new_username

Эта команда покажет статус пароля для указанного пользователя.

Заключение

Создание нового пользователя с зашифрованным паролем в Linux с помощью команды useradd — это процесс, который включает генерацию безопасного хэшированного пароля, который затем можно использовать при создании пользователя. Используя приведенные выше методы, вы можете эффективно управлять пользователями и обеспечивать высокий уровень безопасности в вашей системе.

Следуйте данным инструкциям, чтобы упростить процесс администрирования ваших пользовательских учётных записей и защитить важные данные от несанкционированного доступа.

Оцените материал
Добавить комментарий

Капча загружается...