
Я хотел бы создать зашифрованный пароль входа для нового пользователя, используя 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