¿Cómo cifro la contraseña de un nuevo usuario usando el comando useradd?

¿Cómo cifro la contraseña de un nuevo usuario usando el comando useradd?

Me gustaría crear una contraseña de inicio de sesión cifrada para un nuevo usuario mientras uso el useraddcomando en la CLI. Sé que usar la opción -pme permitirá crear una contraseña, pero usar esta opción no cifra la contraseña. También sé que puedo crear una contraseña cifrada usando el passwd [username]comando por separado después de que se haya creado el nuevo usuario useradd, pero como dije, me gustaría saber cómo crear una contraseña cifrada a través del useraddcomando.

Respuesta1

Podrías usar Perl:

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

O Python con el cryptmódulo:

python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"
  • foo: la contraseña para cifrar
  • $6: el tipo de cifrado, en este caso SHA-512
  • $(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32): la sal de cifrado, en este caso una cadena aleatoria de 32 caracteres.

En conjunto con useradd:

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

O:

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

Respuesta2

Puede evitar toda la molestia de la administración de usuarios con contraseña creada por el administrador creando el ID de usuario y luego utilizándolo passwd --expire. 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.

Respuesta3

Como passwd no es compatible con --stdin en Ubuntu, puedes probar esto:

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

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

Respuesta4

Lo siguiente funcionó para mí con 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

Esto puede requerir primero la instalación makepasswdusando(en Ubuntu o Debian; google para otras distribuciones):

sudo apt install makepasswd

información relacionada