#1 Le 07/09/2015, à 10:20
- Boombastick
[SH] Comment changer le pass avec un script
Salut à tous !
Je doit faire un script qui change le password de root je m'explique :
Le script demande à l'utlisateur le nouveau mot de passe
Le script change le mot de passe de root à l'aide de passwd par exemple
Mais comme il faut confirmer une seconde fois le pass...
Quelqu'un à une idée ?
Hors ligne
#2 Le 07/09/2015, à 10:33
- genma
Re : [SH] Comment changer le pass avec un script
Un script contenant
echo -e "new_password\nnew_password" | (passwd --stdin $USER)
via http://ccm.net/faq/790-changing-password-via-a-script
changera le mot de passe en une ligne
Plus complexe mais plus sûr à adapter (via https://stackoverflow.com/questions/278 … via-script:
#!/bin/bash
echo "Please enter username:"
read username
echo "Please enter the new password:"
read -s password1
echo "Please repeat the new password:"
read -s password2
# Check both passwords match
if [ $password1 != $password2 ]; then
echo "Passwords do not match"
exit
fi
# Does User exist?
id $username &> /dev/null
if [ $? -eq 0 ]; then
echo "$username exists... changing password."
else
echo "$username does not exist - Password could not be updated for $username"; exit
fi
# Change password
echo -e "$password1\n$password1" | passwd $username
Attention, très mauvaises idées :
- d'avoir un fichier avec un mot de passe root dedans.
- de faire le script ci dessus si tu ne le comprends pas.
"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ? https://blog.genma.fr
Mon twitter? http://twitter.com/genma
Hors ligne
#3 Le 07/09/2015, à 11:09
- Boombastick
Re : [SH] Comment changer le pass avec un script
Merci beaucoup j'ai pu avancer sur cette partie par contre je ne comprend pas pourquoi il me dit :
./pass.sh: ligne 30: erreur de syntaxe : fin de fichier prématurée
Voici mon .sh au cas où :
#!/bin/bash
echo "Nouveau mot de passe root : "
read -s PROOT1
echo "Confirmation du mot de passe : "
read -s PROOT2
if [ $PROOT1 != $PROOT2 ]; then
echo "Les mots de passe ne correspondent pas."
else
echo -e "$PROOT1\n$PROOT2" | passwd root
echo "Entrez le nom du user secondaire : "
read NUSER
id $NUSER &> /dev/null
if [ $? -eq 0 ]; then
echo "$NUSER existe déjà."
else
echo "Mot de passe de $NUSER : "
read -s PUSER1
echo "Confirmation du mot de passe : "
read -s PUSER2
if [ $PUSER1 != $PUSER2 ]; then
echo "Les mots de passe ne correspondent pas."
else
useradd -M -s /bin/bash $NUSER
echo -e "$PUSER1\n$PUSER2" | passwd $NUSER
exit 4
fi
Dernière modification par Boombastick (Le 07/09/2015, à 11:09)
Hors ligne
#4 Le 07/09/2015, à 11:48
- nany
Re : [SH] Comment changer le pass avec un script
Bonjour,
le premier if n’est pas fermé, bash cherche la fin de cet if et finit par atteindre la dernière ligne d’où l’erreur fin de fichier prématurée : il faut mettre un fi à la ligne 11.
Hors ligne
#5 Le 07/09/2015, à 12:05
- pingouinux
Re : [SH] Comment changer le pass avec un script
Bonjour,
L'avant-dernier if n'est pas fermé non plus.
Hors ligne
#6 Le 07/09/2015, à 12:14
- tiramiseb
Re : [SH] Comment changer le pass avec un script
Salut,
N'oublions pas que c'est totalement nul du point de vue de la sécurité, notamment en raison de l'apparition du mot de passe dans le retour de "ps" ou de "top" si c'est exécuté au moment où le "echo" concerné est exécuté.
Pourquoi vouloir demander ce mot de passe alors que juste derrière tu exécutes la commande passwd ? Moi y'en a pas comprendre l'intérêt...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#7 Le 07/09/2015, à 12:22
- Boombastick
Re : [SH] Comment changer le pass avec un script
Salut,
N'oublions pas que c'est totalement nul du point de vue de la sécurité, notamment en raison de l'apparition du mot de passe dans le retour de "ps" ou de "top" si c'est exécuté au moment où le "echo" concerné est exécuté.
Pourquoi vouloir demander ce mot de passe alors que juste derrière tu exécutes la commande passwd ? Moi y'en a pas comprendre l'intérêt...
Je débute en programmation et forcement en premier lieux, je me tourne vers bash. Même si ce n'est pas à proprement parlé de la programmation, la logique est la même.
Que me conseil tu du coup comme alternative ?
Hors ligne
#8 Le 07/09/2015, à 12:25
- tiramiseb
Re : [SH] Comment changer le pass avec un script
Que me conseil tu du coup comme alternative ?
Bah là ce que tu fais, c'est :
=> je demande le premier mot de passe
=> je demande le deuxième mot de passe
=> je donne les deux mots de passe à "passwd"
Tu ne fais aucun traitement entretemps...
Alors pourquoi ne pas directement exécuter passwd, en laissant l'utilisateur remplir les informations ?
(par ailleurs, l'argument "root" à "passwd" est inutile car quand on exécute "passwd" sans argument ça modifie le mot de passe de l'utilisateur courant... et le seul utilisateur à avoir le droit de modifier le mot de passe de root c'est root, donc c'est toujours l'utilisateur courant)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#9 Le 07/09/2015, à 12:31
- Boombastick
Re : [SH] Comment changer le pass avec un script
Que me conseil tu du coup comme alternative ?
Bah là ce que tu fais, c'est :
=> je demande le premier mot de passe
=> je demande le deuxième mot de passe
=> je donne les deux mots de passe à "passwd"Tu ne fais aucun traitement entretemps...
Alors pourquoi ne pas directement exécuter passwd, en laissant l'utilisateur remplir les informations ?
(par ailleurs, l'argument "root" à "passwd" est inutile car quand on exécute "passwd" sans argument ça modifie le mot de passe de l'utilisateur courant... et le seul utilisateur à avoir le droit de modifier le mot de passe de root c'est root, donc c'est toujours l'utilisateur courant)
En ait je n'ai pas pu exécuter le script jusqu'au passwd. Effectivement, maintenant que le script done, je comprend mieux. Merci beaucoup à tous !
Hors ligne
#10 Le 07/09/2015, à 12:34
- Boombastick
Re : [SH] Comment changer le pass avec un script
tiramiseb a écrit :Que me conseil tu du coup comme alternative ?
Bah là ce que tu fais, c'est :
=> je demande le premier mot de passe
=> je demande le deuxième mot de passe
=> je donne les deux mots de passe à "passwd"Tu ne fais aucun traitement entretemps...
Alors pourquoi ne pas directement exécuter passwd, en laissant l'utilisateur remplir les informations ?
(par ailleurs, l'argument "root" à "passwd" est inutile car quand on exécute "passwd" sans argument ça modifie le mot de passe de l'utilisateur courant... et le seul utilisateur à avoir le droit de modifier le mot de passe de root c'est root, donc c'est toujours l'utilisateur courant)
En fait je n'ai pas pu exécuter le script jusqu'au passwd. Effectivement, maintenant que le script done, je comprend mieux. Merci beaucoup à tous !
Hors ligne
#11 Le 07/09/2015, à 12:38
- Boombastick
Re : [SH] Comment changer le pass avec un script
Je vais passer le sujet en résolu, par contre juste une tite question tant que j'y suis :
Es ce qu'il y a un équivalent à pause de DOS ?
Juste histoire de stopper le script et attendre que le user presse une touche.
J'ai demandé sur 2 3 iRC mais à par me filer un script "minuteur"...
Hors ligne
#12 Le 07/09/2015, à 12:44
- tiramiseb
Re : [SH] Comment changer le pass avec un script
Bah tu fais un "read" avec un nom de variable à la con :
read useless
Ah oui, au fait, plutôt que de faire un echo puis un read, tu peux utiliser l'argument "-p" de read...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#13 Le 07/09/2015, à 12:44
- pingouinux
Re : [SH] Comment changer le pass avec un script
Es ce qu'il y a un équivalent à pause de DOS ?
read
Hors ligne
#14 Le 07/09/2015, à 12:47
- nany
Re : [SH] Comment changer le pass avec un script
read -n1 -r -p "Appuyer sur une touche pour continuer..." key
Hors ligne
#15 Le 07/09/2015, à 12:50
- nesthib
Re : [SH] Comment changer le pass avec un script
Je rejoins tiramiseb à 100%, ce que tu cherches à faire est inutile et dangereux d'un point de vue sécurité (je te dis les choses franchement).
Quand on découvre le scripting, on a souvent tendance à faire des scripts inutiles, après on apprend directement à utiliser les bon outils
Changer le mot de passe d'un (ou plusieurs) utilisateurs :
chpasswd --crypt-method SHA512 <<<"username:password"
nul besoin d'un script qui moulinera pour rien
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#16 Le 07/09/2015, à 12:52
- nany
Re : [SH] Comment changer le pass avec un script
Quand on découvre le scripting, on a souvent tendance à faire des scripts inutiles, après on apprend directement à utiliser les bon outils
+1
Et donc, par extension, +1 sur l’avis de tiramiseb.
Hors ligne
#17 Le 07/09/2015, à 13:01
- Boombastick
Re : [SH] Comment changer le pass avec un script
Je rejoins tiramiseb à 100%, ce que tu cherches à faire est inutile et dangereux d'un point de vue sécurité (je te dis les choses franchement).
Quand on découvre le scripting, on a souvent tendance à faire des scripts inutiles, après on apprend directement à utiliser les bon outils
Changer le mot de passe d'un (ou plusieurs) utilisateurs :
chpasswd --crypt-method SHA512 <<<"username:password"
nul besoin d'un script qui moulinera pour rien
Par contre là le pass s'affiche à l'écran quand on le tape...je tatillonne mais si t'as l'arpète sur tes genoux...
Hors ligne
#18 Le 07/09/2015, à 16:54
- nesthib
Re : [SH] Comment changer le pass avec un script
Si tu expliquais pourquoi tu cherches à faire ce genre de script ?
Soit tu es un administrateur système, tu sais ce que tu fais, tu peux changer les mots de passe à loisir et tu n'as personne derrière toi pour espionner et l'utilisation de chpasswd est appropriée.
Soit tu es un utilisateur lambda qui change parfois son mot de passe (quoique tu parles ici du mot de passe root, qui n'existe même pas sous Ubuntu par défaut), et tu devrais utiliser l'outil graphique ou passwd pour changer le mot de passe.
Soit tu cherches à faire autre chose, avec 99% de probabilité que ça soit pour une mauvaise raison, auquel cas tu devrais l'expliquer car ce que est mentionné plus haut n'a pas vraiment de sens.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne