Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Probleme de scripts création automatique des utilisateurs
Envoyé par: bebert-2002

Bonjour à tous,
j'ai un petit problème avec ce script shell :
Il est sensé, suivant le fichier que l'on passe en paramètre, lire le contenu et rajouter les utilisateurs avec le mot de pass correspondant,
par exemple, contenu du fichier test.txt

nanard:nanard
bebert:bebert


#!/bin/bash
if [ $# -ne 1 ]
        then
        echo "Usage : $0  <nom_de_fichier>"
        exit -l
fi

if [ -e $1 ]
        then
        while read ligne
        do
                nom=$(echo "$ligne"|cut -d: -f1) # On prend la chaine située avant le séparateur :
                pass=$(echo "$ligne"|cut -d: -f2) # On prend la chaine située après le séparateur :
                echo "Traitement de l'utilisateur $nom"
                useradd "$nom"                 # on rajoute l'utilisateur que retourne $nom
                echo $pass | passwd $nom --stdin  # On affecte un mdp en retirant le passage en mode
                                                    interactif --stdin
        done < $1
        else
        echo "Le fichier n'existe pas!"
        exit -l
fi

lorsque je l'execute, j'obtiens cette erreur :

luke@bebernux:~$ sudo ./ex22.sh test.txt
Password:
Traitement de l'utilisateur bebert
useradd : l'utilisateur bebert existe
passwd: option invalide -- -
Usage : passwd [-f|-s] [nom]
       passwd [-x max] [-n min] [-w avert] [-i inact] nom
       passwd {-l|-u|-d|-S|-e} nom

donc --stdin est invalide, je l'enlève et voici ce qu'il se passe :

luke@bebernux:~$ sudo ./ex22.sh test.txt
Traitement de l'utilisateur bebert
Enter new UNIX password: Retype new UNIX password: Sorry, passwords do not matchpasswd : Authentication information cannot be recovered

Ma question est donc toute simple, comment faire pour contouner le mode de passage interactif de passwd, j'ai bien cherché dans le manuel mais à aucun moment ils parlent d'une option permettant cela,

merci par avance

Je suis sous Ubuntu 5.10

Poste le Wednesday 22 February 2006 12:08:15
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: elfato

su -c "for i in `cat liste_user|cut -d":" -f1` ; do useradd -c `echo "utilisateur_$i"` -d /home/$i -m -g USERS -p `cat liste_user | grep $i | cut -d":" -f2` -s /bin/bash ; done"

pourquoi ecrire un script quand la commande existe (?) quand à passer root pour le faire utilises su pas sudo et autres betises du genre (!)

Poste le Wednesday 22 February 2006 16:32:02
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: elfato


et voilà
>tail /etc/passwd
TEST0:*:2007:15:utilisateur TEST:/home/TEST0:/usr/bin/ksh
TEST1:*:2008:15:utilisateur TEST:/home/TEST1:/usr/bin/ksh
TEST2:*:2009:15:utilisateur TEST:/home/TEST2:/usr/bin/ksh
TEST3:*:2010:15:utilisateur TEST:/home/TEST3:/usr/bin/ksh
TEST4:*:2011:15:utilisateur TEST:/home/TEST4:/usr/bin/ksh
TEST5:*:2012:15:utilisateur TEST:/home/TEST5:/usr/bin/ksh
TEST6:*:2013:15:utilisateur TEST:/home/TEST6:/usr/bin/ksh
TEST7:*:2014:15:utilisateur TEST:/home/TEST7:/usr/bin/ksh
TEST8:*:2015:15:utilisateur TEST:/home/TEST8:/usr/bin/ksh
>

Poste le Wednesday 22 February 2006 16:35:55
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: bebert-2002

merci pour ta réponse, mais,

primo : si j'écris un script, c'est parce qu'on me demande de le faire winking smiley

secundo : écrire un script ca évite de te refarcir toute la commande telle que tu l'écris

tertio : useradd -p = mot de passe en clair

Ceci dit, merci, je vais quand même utilisé -p en traitant un passage par crypt

Poste le Wednesday 22 February 2006 16:55:48
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: Sve@r

Citation
bebert-2002
merci pour ta réponse, mais,

primo : si j'écris un script, c'est parce qu'on me
demande de le faire winking smiley
C'est déjà pas mal de faire ce qu'on te dit. Beaucoup ne sont pas comme toi... :-))

Citation
bebert-2002
secundo : écrire un script ca évite de te refarcir
toute la commande telle que tu l'écris
Euh... si tu mets la commande dans un script c'est un peu faire un script non ?

Citation
bebert-2002
tertio : useradd -p = mot de passe en clair
Là suis pas d'accord. Tu mets après "-p" la chaîne telle qu'elle sera écrite dans "/etc/shadow" donc c'est le mot de passe crypté que tu y mets et point de passe en clair...

Citation
bebert-2002
Ceci dit, merci, je vais quand même utilisER -p en
traitant un passage par crypt
Bien sûr...


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Wednesday 22 February 2006 19:19:36
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: menelrandir

Ce n'est pas le même problème que là :
[lea-linux.org]
;-)

Poste le Wednesday 22 February 2006 21:49:37
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: elfato

en prime ce que tu dis est faux le password n"est absoluement pas passé en clair mais en crypté
deplus il n"apparait pas puisque tu le pompe dans le fichier source (la liste des utilisateurs à créer)

enfin si tu tiens absoluement à faire un script tu ajoutes juste
#!/bin/bash
avant la ligne que je t'ai fourni est basta.....

Poste le Thursday 23 February 2006 09:37:40
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: bebert-2002

Je vous remercie pour vos réponses,
j'ai beau tester la commande que tu donnes elfato, elle ne fonctionne pas :

root@bebernux:/home/luke# su -c "for i in `cat liste_user|cut -d":" -f1` ; do useradd -c `echo "utilisateur_$i"` -d /home/$i -m -g USERS -p `cat liste_user | grep $i | cut -d":" -f2` -s /bin/bash ; done"
Usage: grep [OPTION]... PATRON [FICHIER]...
Pour en savoir davantage, faites: « grep --help ».
bash: -c: line 1: syntax error near unexpected token `nanard'
bash: -c: line 1: `nanard'

en changeant un peu :

 su -c "for i in `cat liste_user|cut -d":" -f1` ; do useradd -c `echo "utilisateur_$i"` -d /home/$i -m -g users -p `cat liste_user | grep -i $i | cut -d":" -f2` -s /bin/bash ; done"
Usage: grep [OPTION]... PATRON [FICHIER]...
Pour en savoir davantage, faites: « grep --help ».

résultat :

root@bebernux:/home/luke# tail --lines=1 /etc/shadow
/bin/bash:-s:13203:0:99999:7:::

enfin,

Citation
elfato
en prime ce que tu dis est faux le password n"est absoluement pas passé en clair mais en crypté
deplus il n"apparait pas puisque tu le pompe dans le fichier source (la liste des utilisateurs à créer)

Si tu regardes bien mon exemple de fichier que j'ai mis en haut, pour rappel :
bebert:bebert
nanard:nanard
elfato:elfato

Les mdp, situés après : ne sont pas ce que l'on peut appeler cryptés, et pour preuve :

root@bebernux:/home/luke# ./ex22.sh test.txt
Traitement de l'utilisateur bebert
Traitement de l'utilisateur nanard
Traitement de l'utilisateur elfato
root@bebernux:/home/luke# tail --lines=3 /etc/passwd
bebert:x:5503:100::/home/bebert:
nanard:x:5504:100::/home/nanard:
elfato:x:5505:100::/home/elfato:
root@bebernux:/home/luke# tail --lines=3 /etc/shadow
bebert:bebert:13203:0:99999:7:::
nanard:nanard:13203:0:99999:7:::
elfato:elfato:13203:0:99999:7:::

Alors certes je n'ai pas ta maitrise, ni ta connaissance, mais j'ai écrit cela, c'est parce que je l'ai vérifié winking smiley

merci quand même


Poste le Friday 24 February 2006 11:11:43
Répondre     Citer    
Re: Probleme de scripts création automatique des utilisateurs
Envoyé par: Sve@r

Citation
bebert-2002
Je vous remercie pour vos réponses,
j'ai beau tester la commande que tu donnes elfato,
elle ne fonctionne pas :

root@bebernux:/home/luke# su -c "for i in `cat
liste_user|cut -d":" -f1` ; do useradd -c `echo
"utilisateur_$i"` -d /home/$i -m -g USERS -p `cat
liste_user | grep $i | cut -d":" -f2` -s /bin/bash
; done"
Usage: grep ... PATRON ...
Pour en savoir davantage, faites: « grep --help
».
bash: -c: line 1: syntax error near unexpected
token `nanard'
bash: -c: line 1: `nanard'

en changeant un peu :

su -c "for i in `cat liste_user|cut -d":" -f1` ;
do useradd -c `echo "utilisateur_$i"` -d /home/$i
-m -g users -p `cat liste_user | grep -i $i | cut
-d":" -f2` -s /bin/bash ; done"
Usage: grep ... PATRON ...
Pour en savoir davantage, faites: « grep --help
».

résultat :

root@bebernux:/home/luke# tail --lines=1
/etc/shadow
/bin/bash:-s:13203:0:99999:7:::

enfin,

elfato a écrit : en prime ce que tu dis est faux
le password n"est absoluement pas passé en clair
mais en crypté
deplus il n"apparait pas puisque tu le pompe dans
le fichier source (la liste des utilisateurs à
créer)

Si tu regardes bien mon exemple de fichier que
j'ai mis en haut, pour rappel :
bebert:bebert
nanard:nanard
elfato:elfato

Les mdp, situés après : ne sont pas ce que l'on
peut appeler cryptés, et pour preuve :

root@bebernux:/home/luke# ./ex22.sh test.txt
Traitement de l'utilisateur bebert
Traitement de l'utilisateur nanard
Traitement de l'utilisateur elfato
root@bebernux:/home/luke# tail --lines=3
/etc/passwd
bebert:x:5503:100::/home/bebert:
nanard:x:5504:100::/home/nanard:
elfato:x:5505:100::/home/elfato:
root@bebernux:/home/luke# tail --lines=3
/etc/shadow
bebert:bebert:13203:0:99999:7:::
nanard:nanard:13203:0:99999:7:::
elfato:elfato:13203:0:99999:7:::

Alors certes je n'ai pas ta maitrise, ni ta
connaissance, mais j'ai écrit cela, c'est parce
que je l'ai vérifié winking smiley

merci quand même
Tu n'as pas compris ce qu'on voulait t'expliquer !!!

La chaîne que tu mets après "-p" sera enregistrée telle quelle dans le fichier "/etc/shadow". Mais ce fichier doit impérativement contenir le mot de passe crypté. Il s'ensuit que tu dois passer ce mot de passe déjà crypté à l'option "-p". La façon dont tu cryptes importe peu, l'important est que l'algo de ce cryptage soit le même que celui utilisé par le système.

Ensuite, quand tu te connectes sous un compte, tu donnes un mot de passe. Le système crypte le mot que tu donnes et vérifie si le résultat correspond au mot de passe enregistré => il n'y a jamais de décryptage mais, corollaire, n'importe quel synonyme qui serait crypté pareil que le vrai mot de passe sera considéré par le système comme vrai (heureusement très improbable).

Toi tu y passes "-p bebert", ça enregistre "bebert" dans le fichier shadow et c'est tout à fait normal. Mais je doute fort que tu arrives à te connecter sous le compte "bebert" parce qu'il faudrait que tu donnes un mot qui, après avoir été crypté, devienne "bebert" (ce qui est totalement impossible puisque le cryptage "DES" utilisé jusqu'il y a pas très longtemps donne toujours 13 caractères quelle que soit la longueur du mot entré).

Donc il faut que ton fichier "test.txt" contienne des mots de passe déjà cryptés et personne ne les verra jamais en clair...

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Friday 24 February 2006 12:46:05
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Probleme de scripts création automatique des utilisateurs
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons