De plus en plus le protocole FTP est critiqué pour son manque de sécurtié, comparé à d'autres protocoles de transfert sécurisés, tel scp. Personnellement je l'aprécie parce qu'il reste encore parfois (de moins en moins souvent c'est vrai) la seule possibilité de protocole de transfert chez certains hébergeurs, mais surtout pour la possibilité de gérer des utilisateurs virtuels (plutôt que de créer un compte système pour chaque utilisateur). J'ai toujours utilisé pureftpd, séduit par ce serveur légé, très configurable,disponible de base dans les répos Fedora, et de plus je pouvais m'appuyer sur l'excellent tutoriel de drpixel même si Fedora par défaut propose le serveur vsftpd lors de son installation. Récemment j'ai eu à configurer un serveur FTP sous CentOS 5.0, qui propose aussi vsftpd par défaut, et qui n'a pas dans ses dépôts de base pureftpd. J'ai vite trouvé un dépôt tiers le proposant, mais je me suis dis que c'etais plutôt une occasion de découvrir vsftpd, et j'ai immédiatement apprécié la aussi sa souplesse, sa légereté, et le fait qu'il propose une configuration très fine pour chaque utilisateur, bref, je l'ai adopté. L'intérêt de vsftpd est aussi son système d'authentification par PAM. Ainsi vous pouvez utiliser tous les types de stockage d'utilisateurs que PAM permet. Il sera par exemple très simple de les stocker dans une base mysql.

Je décris donc dans ce billet l'installation et la configuration de vsftpd, utilisant des utilisateurs virtuels, s'identifiant avec PAM. Jai choisis comme stockage pour les utilisateurs une petite base au format berkeley. Pour chacun de ces utilisateurs, je ferais en sorte que chaque paramètre de configuration puisse être personnalisé. J'ai testé ces manipulations sous Fedora 7 et CentOS 5.0. Je me suis inspiré de cet article pour rédiger ce billet.

Attention, cette documentation a été intégrée au wiki de fedora-fr.org à cette adresse. Mieu vaut la suivre sur ce wiki car elle bénéficie de plus de mises à jour (notemment pour le stockage des utilisateurs virtuels dans une base MySQL).