Mon shell ne fonctionne pas [Résolu/Fermé]

Signaler
Messages postés
14
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
14 septembre 2007
-
Messages postés
14
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
14 septembre 2007
-
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

Messages postés
789
Date d'inscription
samedi 26 février 2005
Statut
Contributeur
Dernière intervention
19 juillet 2009
291
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
Messages postés
29880
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
11 juin 2021
7 121
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 861
Quand shelle ne marche pas, vas chez esso (oups)
Tu nous fais la Total(e) là ;-DDDDD

PS. Le compte est bon ;-))
Messages postés
14
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
14 septembre 2007
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
Messages postés
29880
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
11 juin 2021
7 121
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
Messages postés
14
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
14 septembre 2007
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
Messages postés
29880
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
11 juin 2021
7 121
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.
Messages postés
14
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
14 septembre 2007
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