Mon shell ne fonctionne pas

Résolu
bonjour,

Mon script shell ne fonctionne pas sur deux points :

il n'affecte pas de mot de passe.
si je ne double pas les 3 dernieres lignes il n'attribu pas les securites.

Mon script est chargé de créer un repertoire, un utilisateur et son mot de passe, et changer les droit sur le dossier.

Je debutre en shell donc si quelqu'un pouvait me guider.

merci
-----------------------
#!/bin/sh
echo "affichage des repertoires présents"
ls /etc/vsftpd/ftp/
#recuperation des variables
echo "Quel repertoire voulez vous rajouter ? (nom de l'utilisateur)"
read user
echo "Saisissez un mot de passe"
read pass
#creation du groupe
groupadd $user
#dossier personnel
mkdir /etc/vsftpd/ftp/$user
#creation user et pass
useradd $user -g $user -d /etc/vsftpd/ftp/$user -p $pass
#modif des securités
chown $user /etc/vsftpd/ftp/$user
chgrp clientftp /etc/vsftpd/ftp/$user
chmod 750 /etc/vsftpd/ftp/$user
---------------------------------------

7 réponses

  1. J'ai resolu le problème, en fait la ligne qui posait reelement soucis etait le useradd avec l'option -p pour le mot de passe, donc j'ai fait la manip en 2 ligne distincte, useradd puis passwd -f et tout fonctionne.

    merci beaucoup a tous pour votre aide
    1. Modérateur
      Ah sinon de manière générale les variables shell on les écrit en capitales et quand on veut récupérer le contenu on écrit plutôt ${PLOP}, ça fait plus classe. Mais bon ta méthode marche tout aussi bien.
      1. la je comprend mieux cette histoire de variables a passer en parametres.

        j'ai pas pensé a tester mes saisies en faisant un echo des variables, j'y vais de ce pas, ca m'evitera de m'en coller une pour pas avoir pensé a cette manip de debug toute simple lolll

        merci
        1. Modérateur
          Tu nous fais la Total(e) là ;-DDDDD

          :-)))

          par contre je t'ai pas trop compris mamiemando, selon toi si une variable n'est pas dans env il faut la passer en parametre ?

          C'est très simple, en bash aucune variable n'est définie sauf :
          - $1, $2, $3, les paramètres du script
          - les variables d'environnement que l'on peut afficher en tapant env. Par exemple chez moi :
          echo $HOME
          /home/mando
          echo $USER
          mando

          Mais en fait j'ai complètement craqué, je n'avais pas vu le read user et le read pass. Chose que tu peux tester dans un premier temps c'est taper la commande à la main dans une console et regarder si ça fait ce que tu veux.
          useradd tapir -g tapir -d /etc/vsftpd/ftp/tapir -p plop

          Tu peux aussi afficher les variables pour voir si elles contiennent ce qu'il faut :
          echo $user
          echo $pass

          Bonne chance
          1. merci beaucoup, je vais travaillez tout cela,
            je connaissait pas adduser mais les man affiche la meme chose.

            par contre je t'ai pas trop compris mamiemando, selon toi si une variable n'est pas dans env il faut la passer en parametre ?
            tu aurai un exemple de script la dessus ?

            sinon je vais travailler sur le script de phiphi des lundi.

            merci
            1. Modérateur
              Quand shelle ne marche pas, vas chez esso (oups).
              Plus sérieusement, la variable $USER a un sens car elle apparaît dans ton environnement :
              env | grep -i user

              ce qui n'est pas le cas de la variable $pass :
              env

              Il faudrait la passer en paramètre à ton script (les paramètres sont stockés dans $1, $2 etc...), mais ce n'est pas forcément top car le mot de passe sera affiché en clair sur la console et sera dans ton historique. Le mieux ce serait simplement de demander le mot de passe de manière interactive.

              Bonne chance
              1. Modérateur
                Quand shelle ne marche pas, vas chez esso (oups)
                Tu nous fais la Total(e) là ;-DDDDD

                PS. Le compte est bon ;-))
            2. Contributeur
              Salut!
              pour le mot de passe, le plus simple est peut etre d'utiliser la commande "passwd" ??
              #!/bin/sh 
              echo "affichage des repertoires présents" 
              ls /etc/vsftpd/ftp/ 
              #recuperation des variables 
              echo "Quel repertoire voulez vous rajouter ? (nom de l'utilisateur)" 
              read user 
              mkdir /etc/vsftpd/ftp/$user
              group=vsftp
              adduser --ingroup $group --home /etc/vsftpd/ftp/$user $user
              passwd -d $user    # efface le mot de passe de l'utilisateur
              passwd $user
              #modif des securités 
              chown $user:$group -R /etc/vsftpd/ftp/$user 
              chgrp clientftp /etc/vsftpd/ftp/$user 
              chmod 750 /etc/vsftpd/ftp/$user 


              mais bon, c'est sans doute pas terrible...
              je vois qu'il y a deux fonctions "adduser" et "useradd"...
              je ne connaissais que la premiere, apparemment toi uniquement la seconde...
              je ne sais pas laquelle est le mieux, mais fais un petit tour sur les pages de man pour comprendre au mieux les options : -p passwd : "encrypted password" je crois...

              Phiphi