Mise en place d'un serveur FTP

Fermé
Wave Style 974 Messages postés 902 Date d'inscription dimanche 27 septembre 2009 Statut Membre Dernière intervention 21 janvier 2015 - 27 févr. 2010 à 15:33
Wave Style 974 Messages postés 902 Date d'inscription dimanche 27 septembre 2009 Statut Membre Dernière intervention 21 janvier 2015 - 28 févr. 2010 à 07:04
Bonjour, je possede un serveur FTP disponible a cette adresse : wavestyle974.d2g.com ... Il est disponible avec un client FTP et l'explorateur windows dans les favoris reseaux . Mais le probleme est le suivant : lorsqu'un compte vien a etre créer , on ne peut pas le faire a travers une page HTML , que a partir du PC serveur . Genre si je veux me connecter avec un nom d'utilisateur " Gerard " , Il faut d'abord que je le créer sur le PC serveur , et seulement par ce moyen . Ce que je voudrais , c'est qu'on arrive sur une Page Html ou PHP , on rempli un formulaire , et un compte d'utilisateur est crée sur le Serveur FTP , seulement , je n'ai aucune idée de la maniere a le realiser , si quelqu'un pourrait m'aider , ce serait sympa ...

A voir également:

2 réponses

jeje6_3 Messages postés 12 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 3 mars 2010
27 févr. 2010 à 21:25
Bonjour,
Rien de plus simple (ou pas^^ : c'est vite dit) :
1- tu installe donc un serveur Web (apache si ce n'est pas déjà fait).
2- Tu te créer un fichier HTML avec un formulaire qui demande un nom d'utilisateur et un mot de passe. Ainsi qu'éventuellement son dossier 'home'.
3- En validant ce formulaire, tu fais donc appel à un fichier PHP(obligatoire) qui exécutera toutes les commandes Linux nécessaire à la création du compte.

Avec cette solution tu rencontreras des problèmes de droits : ben oui, le serveur web n'est pas 'root' et n'a donc pas le droit de créer un utilisateur. Pour y remédier, je te conseil d'installer 'sudo' et d'éditer le fichier /etc/sudoers pour autoriser le serveur a exécuter que le script qui suit (sécurité oblige).
4-Tu te crée donc un fichier Shell, par exemple nommé 'CreerUtilisateur.sh' que tu places sur le site (a coté du fichier PHP pour plus de simplicité).
5- Dans ce fichier tu met:
Code Shell
#!/bin/sh
$NOM_UTILISATEUR="$1"
$DOSSIER_HOME="$2"
$MOT_DE_PASSE="3"

if [ -z $NOM_UTILISATEUR -o -z $MOT_DE_PASSE -o -z $DOSSIER_HOME ] ; then 
	exit 1
fi

if ! useradd -d $DOSSIER_HOME -m -s /bin/bash $NOM_UTILISATEUR ; then
	exit 2
fi

if ! /usr/bin/chage -m -1 -M 99999 -W -1 $NOM_UTILISATEUR; then
	exit 3
fi

if ! /bin/echo "$NOM_UTILISATEUR:$MOT_DE_PASSE" | /usr/sbin/chpasswd ; then
	exit 4
fi

if ! chown $NOM_UTILISATEUR $DOSSIER_HOME ; then
	exit 5
fi

Le premier 'if' vérifie qu'il ne manque pas de parametre (le nom, le mot de passe et le dossier 'home')
Le second crée l'utilisateur
Le troisieme fait que le mot de passe n'expirera jamais
Le quatrieme défini le mot de passe
Le cinquieme (facultatif) s'assure que l'utilisateur ai bien tous les droits sur son dossier 'home'
6- Dans le fichier PHP maintenant, tu fait donc les vérification habituelles (il ne faut pas que le nom, le pass et le dossier soient vide !!) puis tu ajoutes, tout bêtement :
Code PHP:
//... Début du script
// $USER_NAME contient le nom d'utilisateur souhaité
// $HOME contient le dossier 'home' souhaité
// $PASSWORD ... bah, tu l'auras compris^^
passthru("sudo CreerUtilisateur.sh $USER_NAME $HOME $PASSWORD",$err);
if ( $err == 0 ) 
{
	// Tout c'est bien passé
	// L'utilisateur est créé
}
else if ( $err == 1 )
{
	// Certains paramettres manques (un champ vide dans le formulaire ?)
}
else if ( $err == 2 )
{
	// Impossible de créer l'utilisateur (il existe déjà ou son nom/home n'est pas valide)
}
else if ( $err == 3 )
{
	// Changement de la longévité du mot de passe... beh, s'il y a une erreur je voi pas d'ou elle peut venir...
}
else if ( $err == 4 )
{
	// Attibution du mot de passe a échoué... mot de passe invalide ??
}
else if ( $err == 5 )
{
	// Impossible de changer les droits, ne devrait pas arriver mais dans le doutes : même raison que le 2
}
...Suite de ton script PHP...

7- Enfin, tu modifies le fichier /etc/sudoers en rajoutant (je ne suis pas sûr des lignes, cela remonte à quelque temps déjà)
Fichier /etc/sudoers
...
Cmnd_Alias CREERUSER="/path/vers/le/fichier/CreerUtilisateur.sh"
...
www-data ALL=PASSWD,CREERUSER=NOPASSWD
...

Voici ce que fait ce fichier:
- On ajoute un alias vers le fichier a exécuter nommé CREERUSER
- Puis on indique a 'sudo' que l'utilisateur 'www-data' (apache) doit donner un mot de passe 'root' pour toutes les commandes qu'il entrera exépté pour la commande 'CREERUSER'

Aprés avoir édité ce fichier n'oubli jamis de redémarrer 'sudo' :
/etc/init.d/sudo restart


Voila, essaye ça, j'ai utilisé cette technique début janvier sur un serveur Debian et ça fonctionne nickel
En cas de problème, n'hesite pas à demander

Bonne soirée
0
Wave Style 974 Messages postés 902 Date d'inscription dimanche 27 septembre 2009 Statut Membre Dernière intervention 21 janvier 2015 76
28 févr. 2010 à 07:04
Ok merci a toi , je vais essayer tout sa et jen t'en dis des nouvelles , Merci à toi !
0