Mon shell ne fonctionne pas

Résolu
jluc83 Messages postés 14 Statut Membre -  
jluc83 Messages postés 14 Statut Membre -
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
---------------------------------------
A voir également:

7 réponses

Phiphi57 Messages postés 789 Date d'inscription   Statut Contributeur Dernière intervention   295
 
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
0
mamiemando Messages postés 34182 Statut Modérateur 7 888
 
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
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Quand shelle ne marche pas, vas chez esso (oups)
Tu nous fais la Total(e) là ;-DDDDD

PS. Le compte est bon ;-))
0
jluc83 Messages postés 14 Statut Membre 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
0
mamiemando Messages postés 34182 Statut Modérateur 7 888
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jluc83 Messages postés 14 Statut Membre 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
0
mamiemando Messages postés 34182 Statut Modérateur 7 888
 
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.
0
jluc83 Messages postés 14 Statut Membre 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
0