Un serveur FTP en 5 minutes chrono
Nous allons dans ce billet détailler l'installation d'un serveur FTP sur une machine tournant sous Ubuntu 10.04 (la procédure marche aussi sur d'autres versions). Le serveur FTP choisi est Pure-ftpd (je l'utilisai déjà sous FreeBSD et il est d'une stabilité à toutes épreuves).
> top chrono
Installation de Pure-ftpd
Il y a plus dur:
sudo apt-get install pure-ftpd pure-ftpd-common
Suite à cette commande, le serveur FTP sera lancé automatiquement. L'ensemble des fichiers de configuration de Pure-ftpd se trouve dans le répertoire suivant: /etc/pure-ftpd/
Il faut ensuite créer l'utilisateur/groupe système avec lequel le serveur FTP sera lancé:
sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Configuration de Pure-ftpd
De base, Pure-ftpd base son authentification sur le PAM système puis sur un fichier de donnée interne. Personnellement et pour des raisons de sécurité, je préfère désactiver l'authentification par PAM. Pour cela il faut éditer le fichier conf/PAMAuthentication et remplacer la ligne yes par no:
# sudo vi /etc/pure-ftpd/conf/PAMAuthentication
no
# sudo vi /etc/pure-ftpd/conf/DontResolve
yes
Pour finir, il faut créer un lien symbolique pour activer l’authentification des utilisateurs virtuels :
# cd /etc/pure-ftpd/auth/
# sudo ln -s ../conf/PureDB 50puredb
Création d'un utilisateur FTP
Par exemple si vous voulez créer l'utilisateur ftp nicolargo dont le répertoire sera /home/ftp/nicolargo, il faut saisir les commandes suivantes:
sudo mkdir /home/ftp/nicolargo
sudo chown -R ftpuser:ftpgroup /home/ftp/nicolargo
sudo pure-pw useradd nicolargo -u ftpuser -g ftpgroup -d /home/ftp/nicolargo
Ces commandes vont avoir comme buts de créer un répertoire local puis de renseigner le fichier de configuration de Pure-ftp: /etc/pure-ftpd/pureftpd.passwd:
# sudo cat /etc/pure-ftpd/pureftpd.passwd
...
nicolargo:$1$ucgVifA0$HFoang9VssnUnErD3X4bj1:1001:1001::/home/ftp/nicolargo/./::::::::::::
Enfin il faut transofrmer ce fichier dans un format sécurisé et lisible par le serveur FTP (/etc/pure-ftpd/pureftpd.pdb):
sudo pure-pw mkdb
On relance alors le serveur pour que la configuration soit prse en compte:
sudo /etc/init.d/pure-ftpd restart
< fin du chrono ! (5 minutes !!!
)
Quelques commandes utiles...
Voici quelques commandes utiles à l'administration de votre serveur FTP.
Pour configurer le message affiché lors de la connexion des utilisateurs, il faut commencer par editer un fichier texte contenant le message:
# sudo vi /etc/motd.pure-ftpd
Bienvenue sur mon beau serveur FTP !
Puis ajouter le chemin de ce fichier dans le fichier /etc/pure-ftpd/conf/FortunesFile:
# sudo vi /etc/pure-ftpd/conf/FortunesFile
/etc/motd.pure-ftpd
Pour connaitre la liste des utilisateurs ayant un compte FTP:
# sudo pure-pw list
nicolargo /home/ftp/nicolargo
Pour changer le mot de passe d'un utilisateur:
sudo pure-pw passwd nicolargo
Pour supprimer le compte d'un utilisateur:
sudo pure-pw userdel nicolargo







Twitter:
Rss:
Commentaires (de mes chers lecteurs):
J’utilise VsFTPd depuis que je suis sous GNU/Linux, un peu plus compliquer à configurer, il est d’une grande stabilité mais aussi très orienté vers la securité. J’ai d’ailleurs fait un petit billet sur celui-ci : http://ubunblox.servhome.org/installation-d-un-serveur-ftp-vsftpd.html
Maintenant le plus dur est de savoir lequel des deux correspond le mieux aux besoins des utilisateurs !!
Sinon beau travail, longue vie à toi et à ton blog
@WeedCast: j’avais testé VsFTPd (également sous FreeBSD) et effectivement la configuratyion n’était pas (à l’époque de mon test) des plus facile… Je vais jeter un coup d’oeil à ton article au cas ou…
A+
Parfois j’ai envie de passer sous Linux, mais c’est un peu rebutant par rapport à juste cliquer sur install_machin.exe!
@david: as tu déjà installé et configuré un serveur FTP sous Windows ? Je peux te dire que celà va te prendre plus de 5 minutes…
Oui je l’ai fait. J’ai installé GuildFTP y’a longtemps puis Serv-U. On installe, on créé un utilisateur, le chemin où il va… Tout à la souris.
J’ai mis (Linux fan) dans mon nom (d’ailleurs ça rentre pas!) parce que j’adore le monde du libre, mais il faut bien admettre que Linux nécessite un mode d’emploi alors que Win et Mac sont plus intuitifs.
Iop iop,
J’ai suivi ton tuto à la lettre et malgré tout, je n’arrive pas à me logger sur mon serveur ftp, error 530. Sinon, très bon blog que je consulte régulièrement. bonne continuation.
++
@tango: l’erreur 530 est la suivante:
“530 User Cannot Log In, Home Directory Inaccessible. Login Failed.”
Bref tu dois avoir un pb avec le home dir de ton user…
En fait il manque ça dans ton tuto pour que ça fonctionne :
Pour finir, il faut créer un lien symbolique pour activer l’authentification des utilisateurs virtuels :
# cd /etc/pure-ftpd/auth/
# ln -s ../conf/PureDB 50puredb
@tango: done
ça ne fonctionne pas chez moi
pourtant je pense avoir suivi ton tuto à la lettre !
Échec lors de la tentative de connexion avec “ECONNREFUSED – Connection refused by server”.
une idée ?
@nicolas (sympa le prénom): peux être un Firewall sur ta machine serveur ? ou alors antre ton client et ton serveur… ?
la classe ce prenom :p
Mon server et mon pc de bureau sont connectés chacun sur un port ethernet de ma neufbox le port 21 est ouvert vers l’ip de mon serveur…
je seche.
@nicolas: l’ouverture du port 21 peut ne pas suffire…
http://blog.nicolargo.com/2008/04/ftp-actif-versus-ftp-passif.html
Mais dans ton cas, si j’ai bien compris, il n’y a pas de Firewall…
it works !
super !
Merci pour 3 choses :
- La qualité de tes billets
- Ta gentillesse à répondre
- Ta rapidité !
@nicolas: de rien, entre nico…
Merci, ça marche super bien !
Bon tuto clair et concis !
Bonjour,
Serait-il possible d’ajouter à ce tuto rapide et efficace la manipulation à effectuer pour acceder à un autre dossier (il me semble que c’est avec “mount” mais je n’y connais vraiment rien
)
D’avance merci
bonjour et merci d’avoir mis en ligne ta procedure
j’ai installé mon serveur ftp en suivant le tuto sous ubuntu 9.10.
quel nom porte mon nouveau serveur et comment puis-je l’atteindre d’un autre pc du meme lan sous xp? par ex. avec filezilla
[resolu]
j’etais pas reveillé ….ca marche tip top!!
merci bcp pour ce tuto marche parfaitement avec ubuntu 9.10
Bonjour Nico,
Petite question concernant ce tuto.
Mes connaissances en linux ne sont pas forcement aussi pointues mais ça me titille quand-même.
Pourquoi désactiver le PAM, si on utilise a la place pureDB ??
Comment faire pour utiliser dans ce cas les utilisateurs système, avec leurs droits respectifs, parce-que là. . tous les fichiers ftp de tous les “utilisateurs” confondus, appartiennent en réalité a un seul et unique user, le ftpuser. et là, niveau sécurité ?!
Tu me dis si je me trompe, mais comment utiliser ton tuto dans un environnement LAMP, hébergement mutualisé ?
Merci d’avance… ça pourrait servir a d’autres.
(sinon pour pas polluer la page, tu peut me répondre par mail)
@Gob: ton message est bien là… Je préfére utiliser les utilisateurs virtuel de Pure-ftpd afin de bien distinguer mes comptes Unix de mes comptes FTP.
Par contre il est également possible d’utiliser une authentification PAM (c’est à dire avec les comptes système Unix). Il faut juste penser à éditer les fichiers suivants:
# sudo echo “yes” > /etc/pure-ftpd/conf/PAMAuthentication
# sudo echo “yes” > /etc/pure-ftpd/conf/ChrootEveryone
# sudo echo “yes” > /etc/pure-ftpd/conf/CreateHomeDir
a+
salut.
super tuto. j’aurai toutefois une question. lorsque j’essaye de me connecter sur mon serveur ftp il me sort ca:
Le serveur a envoyé une réponse passive avec une adresse non routable. Utilisation de l’adresse du serveur à la place
sur certains logiciels en mode actif, cela resoud le problème, (mais c’est rare).
que faut il faire pour remedier à cela?
merci
Salut Nico,
Merci pour ces tutos vraiment excellent. Je voulais savoir un petit truc sur ce serveur FTP, comment fait ton pour le rendre accesible depuis le net, car en local sa marche niquel. J’ai débloqué le port 21 de ma box, mais sa ne suffit pas il faut modifier un fichier de conf non ?
Merci d’avance.
@Geo40: Cela dépend de ton architecture réseau.
Si ton serveur à une adresse IP privée, il faut que tu configures ta “box” pour mettre cette adresse privée en DMZ. Tout les flux arrivant sur ta box seront alors redirigés vers ton serveur. En plus de cala il faut (peut être) ajouter des règles de Firewall pour autoriser les flux entrant vers ton serveur. La liste des ports à autoriser est consultable dans ce billet (FTP mode passif):
http://blog.nicolargo.com/2008/04/ftp-actif-versus-ftp-passif.html
Merci de ta réponse ultra rapide. Mon serveur en effet une @IP privée en 192.168.x.x. Donc je vois ce que je peux faire sur mon routeur. Je te tiens au courant de mon avancé.
Désolé de faire le boulet mais bon, je demande quand même. Le lien que tu m’as filé il parle de ftp passif ce que je voudrais mettre sur mon ftp sauf que je sais pas quels fichiers modifier de /etc/pure-ftpd/
@Geo40:
# echo “30000 32000″ > /etc/pure-ftpd/conf/PassivePortRange
# sudo /etc/init.d/pure-ftpd restart
Quand je redémarre mon serveur voici ce qu’il me dit
Restarting ftp server: /usr/sbin/pure-ftpd-wrapper: Invalid configuration file /etc/pure-ftpd/conf/PassivePortRange: ““30000 32000″” not two numbers
Je sais pas si c’est correct mais je suis allez modifier le fichier /etc/pure-ftpd/conf/PassivePortRange (qui n’existait pas avant ta modif, je sais pas si c’est normal ou non ^^) et j’ai supprimé les guillemets avant 30000 et après 32000.
Merci de tes réponses mon serveur marche niquel. J’ai deux questions par contre. Il y a moyen de mettre des droits car tout le monde peut supprimer up etc…
Et ma deuxième question c’est y’a t’il moyen de partager un dossier autre que celui de l’utilisateur (par exemple /home/user1/Téléchargement en plus de /home/ftp) en mettant un lien ou autre
@Geo40: Oui ces deux choses sont réalisables. Je te conseille la lecture de la documentation officielle plutôt bien faite:
http://www.pureftpd.org/project/pure-ftpd/doc
Bonne lecture
bon tuto, deux/trois lignes en plus pour TLS seraient utiles.
Je viens de migrer quelques dizaines de serveurs sur pure-ftpd (qui avaient vsftpd avant) et j’en suis très content. Surtout au niveau de certains bugs de vsftpd liés à TLS.
dans le genre quick and easy
http://www.commentcamarche.net/faq/6336-installer-un-serveur-ftp-sous-ubuntu#q=sebsauvage+installer+un+serveur+FTP+sous+Ubuntu&cur=1&url=%2F
Merci fait et testé en 5 minutes top chrono.
On en redemande des petites installations comme celle la, bravo Nico !!
Vraiment Bravoooooooooooo et merciiiiiiiiii bien