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. 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
    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. 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
        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. 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
            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. 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