Mon shell ne fonctionne pas
Résolu
jluc83
Messages postés
14
Statut
Membre
-
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
---------------------------------------
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:
- Mon shell ne fonctionne pas
- Classic shell - Télécharger - Personnalisation
- Secure shell - Télécharger - Divers Web & Internet
- Shell infrastructure host c'est quoi - Guide
- Shell startup windows 10 - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans shell infrastructure host - Guide
7 réponses
Salut!
pour le mot de passe, le plus simple est peut etre d'utiliser la commande "passwd" ??
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
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
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 :
ce qui n'est pas le cas de la variable $pass :
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
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
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
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
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 :
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.
Tu peux aussi afficher les variables pour voir si elles contiennent ce qu'il faut :
Bonne chance
:-)))
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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