[Tuto] Monter son serveur ftp avec utilisateurs virtuels

Pour ceux qui me suivent sur Twitter vous avez du voir apparaitre le hashtag #mutualab. C’est en fait un projet que j’ai avec @WoldenAvro. Le but étant de mettre en place une plateforme d’échanges de “bout de codes qui marchent” entre développeurs qui bossent dans les nouveaux médias, plus particulièrement la réalité augmentée/UniversVirtuels.

Le projet est toujours en gestation, je vous en parlerai plus en détail à la rentrée mais pour le moment  je vais vous en faire une présentation technique. Avec Alain nous avons décidé que cette plateforme serait constituée d’une interface web style forum/wiki couplé à un serveur ftp pour présenter et héberger les différents projets mutualisés.

J’ai eu la charge de mettre en place le serveur web et ftp. J’ai décidé de partager cette expérience sous la forme d’un petit tuto, en espérant qu’il puisse vous aider si un jour vous venait à l’idée de monter votre serveur dédié.

Le but étant de vous montrer que c’est finalement pas très compliqué. Il faut quand même avoir quelques connaissances de base de Linux – pouvoir se déplacer dans l’arborescence en ligne de commande, savoir installer des paquets etc… – mais celui qui à utiliser Linux comme OS au moins une fois devrais s’en sortir. Au pire, et c’est ça qui est génial dans le libre, la documentation d’Ubuntu est là pour vous aider. Elle est super complète et si vous ne trouvez pas ce qu’il vous faut il reste les forums qui sont très actifs. Bref vous ne serez jamais seul au monde devant votre prompt :)

Le serveur à été loué chez un hébergeur mais ce tuto fonctionne tout aussi bien avec un vieux PC branché sur une ***box. La seule différence est en fait dans la première demi-heure de mise en place du serveur : Pour un serv loué il suffit de cliquer sur “Installer Ubuntu Server” pour avoir votre distribution Linux alors que pour un serveur maison il faut booter sur un CD préalablement téléchargé et gravé.

Dans les deux cas ce n’est pas très compliqué, il faut renseigner son nom et autres banalités et d’attendre 30min le temps que tout ces petits fichiers prennent place.

Alors une fois Linux installé sur votre machine de quoi a-t-on besoin ?

Pour tout ce qui est web – wiki/forum, urls et autres – on va utiliser le fameux LAMP. Cela veut dire Linux-Apache-Mysql-PHP et cela fait tourner beaucoup de choses. Tient ce blog par exemple tourne sur un LAMP :)

Pour installer un LAMP sous Linux rien de plus simple :

Cette commande va vous installer Apache2, PHP5 et MySQL. Pour vérifier si cela fonctionne il suffit de taper l’IP du serveur dans votre Firefox et vous devriez tomber sur un joli :

It Works !

Cette page est automatiquement générée dans /var/www/ quand on installe Apache. En fait maintenant notre IP est automatiquement redirigée vers le répertoire /var/www/, cela ne me plait pas trop mais heureusement c’est configurable :)

Moi ce que je veux c’est un utilisateurs générique dont le dossier sera la racine du répertoire web. Dossier qui sera partagé ensuite avec tous les utilisateurs qui ont un compte sur le site de mutualab.

Je commence donc par créer cet utilisateur :

Comme tous les utilisateurs de Linux cet utilisateurs aura un répertoire /home/mutualab/ comme répertoire personnel. Créons un répertoire /www/ qui servira de dossier partagé. Attention aux permissions, ce dossier est par défaut protégé en écriture. Hop, on change ça avec un petit

Ensuite il me suffit d’ouvrir le fichier /etc/apache2/sites-available/default et de remplacer DocumentRoot /var/www/ par

Reste maintenant le gros morceau : Mettre en place le serveur FTP et le faire fonctionner avec des utilisateurs virtuels. Pour ce projet j’ai choisi vsftpd, qui a la réputation d’être le plus sécurisé même si le protocole FTP est par nature trop peu “safe”.

N.B : Tout comme le choix d’Ubuntu plutôt que Debian c’est purement arbitraire rien ne vous empêche d’avoir le même résultat en prenant d’autres outils, c’est aussi ça la magie du libre :)

Pour installer vsftpd rien de plus simple :

Par défaut vsftpd est très très sécurisé et ne permet pas grand chose , surtout pas à des utilisateurs non enregistrés sur le système d’exploitation. Il va donc falloir mettre les mains dans le code, heureusement il y a un manuel en ligne et la doc Ubuntu.

Vsftp est un serveur FTP super complet, la doc liée ci dessus est en anglais et donne un peu le tournis, trop de fonctionnalités, trop d’options bref il faut faire le ménage dans tout ça :)

Je vous propose une copie de mon fichier /etc/vsftpd.conf, c’est commenté vous devriez pas avoir trop de mal à déchiffrer.

Ensuite on crée la base de données qui va permettre de mettre les login-pass des utilisateurs de mutualab. Vous pouvez le faire avec une interface graphique comme phpMyadmin moi je vous donne la méthode en ligne de commande c’est beaucoup plus simple :)

Avec cette configuration notre serveur FTP permet à tous les utilisateurs de se connecter au répertoire /home/mutualab/www/ avec leur login et pass qu’ils auront préalablement renseigné sur le site – et donc stocké dans la base de données MySQL. A noter que les utilisateurs seront “bloqués” dans ce répertoire et ne pourront ni se déplacer dans l’arborescence du système ni porté atteinte à la pérennité de celui-ci car ils n’auront pas les droits administrateur.

Pour que le serveur FTP puisse dialoguer avec la base de données on installe le paquet suivant :

Reste à configurer la connexion à la base de données. Pour cela on va utiliser PAM, et configurer le fichier /etc/pam.d/vsftpd

Encore une fois je vous livre la copie du mien :

Et c’est tout ! Il suffit de tester en remplissant un champ de la base de données, vous verrez cela fonctionne nickel. Avec cryptage du mot de passe de l’utilisateur en plus.

J’espère que ce tuto pourra vous être utile, si vous avez des questions, des remarques n’hésitez pas !