# Script bash / useradd avec mot de passe

**URL:** <https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435>\
**Category:** Support Debian\
**Created:** [Juin 30, 2020, 2:55 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435 "2020-06-30T14:55:08Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![vlotho](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vlotho/32/2963_2.png) [@vlotho](https://www.debian-fr.org/u/vlotho)\
**Post date:** [Juin 30, 2020, 2:55 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/1 "2020-06-30T14:55:08Z")

</div>

Salut,  
J’ai un petit réseau virtuel sur GNS3 et il faut que je fasse un script s’exécutant sur une machine du réseau me permettant de créer des utilisateurs et de leur monter un répertoire partager sur un serveur de fichiers.  
Pour le montage, c’est bon 😉  
mais je bloque maintenant sur la création des utilisateurs.  
Je n’arrive pas à leur mettre un mot de passe en parametre.

au début je l’avais mis en clair avec :

```nohighlight
useradd -m -p 'prout' stagiaire

```

mais je n’arrivais pas à me connecter  
du coup je l’ai crypté avec :

```nohighlight
python3 -c 'import crypt; print(crypt.crypt("prout"))'

```

et mis à la place de celui en clair:

```nohighlight
useradd -m -p 'encryptedProut' stagiaire

```

mais ça ce passe toujours pas.  
auriez vous une idée ?

j’ai testé avec :

```nohighlight
echo thePassword | passwd theUsername --stdin

```

mais j’ai un message : option non reconnu --stdin

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Juin 30, 2020, 5:48 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/2 "2020-06-30T17:48:46Z")

</div>

En bash et avec openssl (il y a d’autres moyens) :

```bash
password="super mot de passe !"
crypt_password=$(openssl passwd -1 "$password")
useradd -p $crypt_password -m nom_utilisateur

```

cf. [https://www.openssl.org/docs/man1.1.1/man1/passwd.html](https://www.openssl.org/docs/man1.1.1/man1/passwd.html)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Juin 30, 2020, 9:56 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/3 "2020-06-30T21:56:38Z")

</div>

Bonjour

Ça fonctionne pourtant très bien sur ma machine :

```nohighlight
michel@debT450:~$ su -
Mot de passe : 
root@debT450:~# nouvUser="stagiaire"
root@debT450:~# motDePasse="prout"
root@debT450:~# passChiffre=$(python3 -c "import crypt; print(crypt.crypt('$motDePasse'))")
root@debT450:~# useradd -m -p $passChiffre $nouvUser
root@debT450:~# exit
déconnexion
michel@debT450:~$ su -l stagiaire
Mot de passe : 
$ echo "\nUSER\t: $USER\nSHELL\t: $SHELL\nHOME\t: $HOME\nPWD\t: $PWD\n"                                                               

USER	: stagiaire
SHELL	: /bin/sh
HOME	: /home/stagiaire
PWD	: /home/stagiaire

$ exit
michel@debT450:~$ 

```

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Juillet 1, 2020, 7:36 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/4 "2020-07-01T07:36:34Z")

</div>

J’ai donné une commande basique pour faire un hash MD5 mais évidemment on peut sécuriser davantage avec SHA512 (par défaut pour les utilisateurs) et éventuellement du salage (non indispensable) :

```nohighlight
openssl passwd -6 -salt "salagexx" "mot_de_passe"

```

On peut aussi faire la me chose avec mkpasswd :

```nohighlight
mkpasswd -m sha-512 -S "salagexx" "mot_de_passe"

```

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Juillet 1, 2020, 8:04 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/5 "2020-07-01T08:04:35Z")

</div>

> [@anon70622873](#):
>
> J’ai donné une commande basique pour faire un hash MD5 mais évidemment on peut sécuriser davantage avec SHA512 (par défaut pour les utilisateurs) et éventuellement du salage (non indispensable) :

Effectivement, ça fonctionne aussi,  
mais si le salage et le mot de passe utilisés sont les mêmes pour plusieurs comptes utilisateurs,  
ça sera très facilement reconnaissable dans le fichier **`/etc/shadow`**

* * *

Je viens de me rendre compte que même sans spécifier l’utilisation du salage, **`python3`** l’utilise.  
J’ai modifié mon précédent message en conséquence.

Donc, le problème rencontré par [**vlotho**](https://www.debian-fr.org/u/vlotho) viens d’autre chose,  
ce n’est sans doute qu’une simple question d’utilisation des caractères apostrophe et double-guillemet dans la ligne de commande **python3**

---

<div class="post-metadata">

**Author:** ![vlotho](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vlotho/32/2963_2.png) [@vlotho](https://www.debian-fr.org/u/vlotho)\
**Post date:** [Juillet 1, 2020, 9:06 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/6 "2020-07-01T21:06:09Z")

</div>

désolé de répondre si tard mais j’ai changé de département entre temps.  
je viens de tester en mettant :  
password=«&nbsp;super mot de passe !&nbsp;»  
crypt\_password=$(openssl passwd -6 -salt «&nbsp;prout&nbsp;» «&nbsp;$password&nbsp;»)  
useradd -p $crypt\_password -m nom\_utilisateur

et quand je fais su -l stagiaire il me met une erreur authentification

désolé je pourrais pas vous mettre le code directement, gns3 me saoule encore et je n’arrive plus à sortir de mon réseau.

je comprend pas pourtant j’ai aucun message d’erreur quand j’execute mon script.

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Juillet 2, 2020, 5:08 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/7 "2020-07-02T05:08:27Z")

</div>

Si ce sont exactement ces commandes c’est normal que cela ne fonctionne pas…

> [@vlotho](#):
>
> useradd -p $crypt\_password -m **nom\_utilisateur**

> [@vlotho](#):
>
> su -l **stagiaire**

---

<div class="post-metadata">

**Author:** ![vlotho](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vlotho/32/2963_2.png) [@vlotho](https://www.debian-fr.org/u/vlotho)\
**Post date:** [Juillet 2, 2020, 7:36 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/8 "2020-07-02T07:36:27Z")

</div>

non Bruno je n’ai pas mis «&nbsp;nom\_utilisateur&nbsp;», j’ai bien mis ma variable stagiaire"$m"  
🙂

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Juillet 2, 2020, 8:21 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/9 "2020-07-02T08:21:55Z")

</div>

Alors cela devrait fonctionner. Sauf si l’utilisateur _stagiaire_ existait au préalable.

```auto
getent shadow | grep stagiaire

```

et vérifier que le second champ correspond bien au retour de la commande :

```auto
openssl passwd -6 -salt "chaine_de_salage" "mot_de_passe"

```

---

<div class="post-metadata">

**Author:** ![vlotho](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vlotho/32/2963_2.png) [@vlotho](https://www.debian-fr.org/u/vlotho)\
**Post date:** [Juillet 2, 2020, 8:33 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/10 "2020-07-02T08:33:14Z")

</div>

je vous met le lien du script : [https://termbin.com/qbhs](https://termbin.com/qbhs)

 ![Capture d’écran du 2020-07-02 10-37-36](https://www.debian-fr.org/uploads/default/original/2X/5/59c19d60b751c419f2cec0c7614eb8b4fdef08d7.png)

je viens de tester shadow avec getent et dans le mot de passe encrypté il n’y a pas la partie avant le / c’est à dire : de $6$prout à V61Lp  
c’est normal ?

bon, je l’ai rajouté manuellement dans le shadow et j’arrive à me connecter avec le stagiaire2.  
par contre il faudrait savoir pourquoi est ce qu’il est tronqué

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Juillet 2, 2020, 8:54 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/11 "2020-07-02T08:54:05Z")

</div>

Il doit y a avoir un problème de variables dans ton script.

EDIT : je corrige car je n’arrivais pas à lire le retour sur ta capture d’écran.

---

<div class="post-metadata">

**Author:** ![vlotho](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vlotho/32/2963_2.png) [@vlotho](https://www.debian-fr.org/u/vlotho)\
**Post date:** [Juillet 2, 2020, 8:55 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/12 "2020-07-02T08:55:54Z")

</div>

Quelle variable ? tout est dans la commande useradd, non ?  
surtout que dans la screen cap le retour de la commande affiche bien la commande complète  
ça viendrait pas du / qu’il considère comme un caractère d’échappement ?  
non je sais pas, c’est un peu flou pour moi. surtout que la fin du mot de passe est bien présente dans le shadow

stagiaire2:/QWWDlVquy0GoyjI7HQbkN9JY4nbiLrXxmBfYLCrl4Y5edbw26TkZJeEjl4mcktCwT8Dmalt.:18445:0:99999:7:::

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Juillet 2, 2020, 9:17 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/13 "2020-07-02T09:17:30Z")

</div>

Non c’est à cause des signes $ dans la variable $crypt\_passwd

---

<div class="post-metadata">

**Author:** ![vlotho](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vlotho/32/2963_2.png) [@vlotho](https://www.debian-fr.org/u/vlotho)\
**Post date:** [Juillet 2, 2020, 9:22 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/14 "2020-07-02T09:22:31Z")

</div>

et tu aurais une solution ? 🙂

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Juillet 2, 2020, 9:46 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/15 "2020-07-02T09:46:12Z")

</div>

Essaie :

```nohighlight
ssh root@192.168.10"$r"."$m" useradd -p ${crypt_passwd//$/\\$} -m stagiaire"$m"

```

Pour « échapper » les signes $ on les remplace dans la variables par $

---

<div class="post-metadata">

**Author:** ![vlotho](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vlotho/32/2963_2.png) [@vlotho](https://www.debian-fr.org/u/vlotho)\
**Post date:** [Juillet 2, 2020, 10:02 UTC](https://www.debian-fr.org/t/script-bash-useradd-avec-mot-de-passe/82435/16 "2020-07-02T10:02:00Z")

</div>

Génial, tu me sauves ma soutenance 😃 Merci
