Como criptografo a senha de um novo usuário usando o comando useradd?

Como criptografo a senha de um novo usuário usando o comando useradd?

Gostaria de criar uma senha de login criptografada para um novo usuário ao usar o useraddcomando na CLI. Eu sei que usar a opção -pme permitirá criar uma senha, mas usar essa opção não criptografa a senha. Também sei que posso criar uma senha criptografada usando o passwd [username]comando separadamente após a criação do novo usuário através do useradd, mas como falei, gostaria de saber como criar uma senha criptografada através do useraddcomando.

Responder1

Você poderia usar Perl:

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

Ou Python com o cryptmódulo:

python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"
  • foo: a senha para criptografar
  • $6: o tipo de criptografia, neste caso SHA-512
  • $(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32): o salt de criptografia, neste caso uma sequência aleatória de 32 caracteres.

Em conjunção com useradd:

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

Ou:

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

Responder2

Você pode pular todo o incômodo de administração de usuários com senha criada pelo administrador criando o ID do usuário e, em seguida, usando passwd --expire-o. De 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.

Responder3

Como o passwd não suporta --stdin no Ubuntu, você pode tentar o seguinte:

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

verhttps://administratosphere.wordpress.com/2011/06/16/generating-passwords-using-crypt3/

Responder4

O seguinte funcionou para mim com 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

Isso pode exigir primeiro a instalação makepasswdusando(no Ubuntu ou Debian; google para outras distros):

sudo apt install makepasswd

informação relacionada