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

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

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

решение1

Вы можете использовать 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)\$\")")" [...]

решение2

Вы можете пропустить всю возню с администрированием пользователей, создаваемых администратором, создав идентификатор пользователя, а затем используя passwd --expireего. Из man passwd:

   -e, --expire
       Immediately expire an account's password. This in effect can force
       a user to change his/her password at the user's next login.

решение3

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

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

видетьhttps://administratosphere.wordpress.com/2011/06/16/generating-passwords-using-crypt3/

решение4

У меня с 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

Связанный контент