web-dev-qa-db-fra.com

Comment chiffrer le mot de passe d'un nouvel utilisateur à l'aide de la commande useradd?

Je souhaite créer un mot de passe de connexion chiffré pour un nouvel utilisateur tout en utilisant la commande useradd de la CLI. Je sais que l’utilisation de l’option -p me permettra de créer un mot de passe, mais son utilisation ne permet pas de chiffrer le mot de passe. Je sais aussi que je peux créer un mot de passe crypté à l’aide de la commande passwd [username] séparément une fois le nouvel utilisateur créé via useradd, mais comme je l’ai dit auparavant, je voudrais savoir comment créer un mot de passe crypté. la commande useradd.

1
Charlie D

Puisque passwd ne supporte pas --stdin dans Ubuntu, vous pouvez essayer ceci:

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

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

1
wbrmx

Vous pouvez ignorer tout le problème d'administration des utilisateurs créés par un mot de passe créé par l'administrateur en créant l'ID utilisateur, puis en utilisant 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.
1
waltinator

Vous pouvez utiliser Perl:

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

Ou Python avec le module crypt:

python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"
  • foo: le mot de passe à chiffrer
  • $6: le type de cryptage, dans ce cas SHA-512
  • $(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32): le sel de cryptage, dans ce cas une chaîne aléatoire de 32 caractères.

En conjonction avec 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)\$\")")" [...]
1
kos