 installation et configuration du serveur ftp pureftpd sous debian but de ce document ce document me sert de mémo pour installer le serveur ftp pureftpd  sur une debian stable sarge  prérequis avoir installé une debian sarge de base cf mon autre document sur ce sujet  http wwwcoagulorg articlephp3 idarticle 337 choix d un serveur ftp sous linux il existe de nombreux serveurs ftp les deux plus connus étant  proftpd  et  wuftpd  j ai choisi  pureftpd  pour plusieurs raisons il est réputé pour être sécurisé il dispose de beaucoup de fonctionnalités et d options il est facile à configurer et à paramétrer il est possible de le connecter à mysql ou à openldap pour la gestion des utilisateurs cela permet de mettre en place une interface web pour le configurer et gérer les utilisateurs installation classique de pureftpd dans un premier temps j ai choisi de faire une installation classique de  pureftpd  sans le lien avec mysql pour me faire la main avec ce logiciel aptitude install pureftpd remarque lors de l installation il faut choisir entre le mode  inetd  et serveur autonome j ai choisi serveur autonome car mon poste ne fera que cela et ce mode offre plus de possibilités de configuration ex limitation des connexions selon l ip ensuite j ai choisi de ne pas autoriser le programme pureftpwho à s exécuter avec les droits du superutilisateur  premier test avec les utilisateurs du système par défaut  pureftpd  est directement fonctionnel avec les utilisateurs du système pour le tester il suffit de se connecter sur l adresse du serveur avec n importe quel client ftp ftp adressedemonserveur le répertoire ftp utilisé par défaut correspond au home de l utilisateur configuration la configuration de pureftpd est assez spéciale car elle utilise des paramètres passés en ligne de commande par exemple par défaut la ligne de commande ressemble à pureftpd l pam u 1000 e o clf var log pureftpd transferlog b cependant pour faciliter ou améliorer la compréhension de la configuration  pureftpd  utilise un fichier de configuration par option de la ligne de commande ces fichiers sont enregistrés dans le dossier   etc pureftpd conf  ensuite le programme  pureftpdwrapper  se charge automatiquement de lire ces fichiers de configuration pour modifier les paramètres de la ligne de commande par exemple il est possible de modifier le nom du fichier contenant les logs en modifiant le fichier   etc pureftpd conf altlog  pour prendre en compte la modification dans les fichiers de configuration il faut lancer la commande suivante etc initd pureftpd forcereload pour avoir la liste des fichiers de configuration qu il est possible de créer ou de modifier et la syntaxe pour les renseigner il faut faire man pureftpdwrapper il faut faire attention à la case des caractères lors de la création des fichiers chaque fichier correspondant à une option de configuration que vous retrouverez au chapitre annexe de ce document par exemple en créant le fichier etc pureftpd conf chrooteveryone et en mettant yes sur sa première ligne cela permet de chrooter les utilisateurs pour info cela ajoutera le paramètre a sur la ligne de commandes après avoir rechargé la configuration dans mon cas j ai créé les fichiers suivant  fichiers contenu  etc pureftpd conf chrooteveryone yes etc pureftpd conf createhomedir yes etc pureftpd conf maxdiskusage 80 création d utilisateurs virtuels dans mon cas je souhaite que les comptes du système soient dissociés des comptes d accès au serveur ftp dans ce cas il faut donc créer des utilisateurs virtuels il faut donc commencer par créer un vrai compte système mais sans accès à celuici groupadd ftpgroup useradd g ftpgroup d dev null s etc ftpuser ensuite il faut créer les utilisateurs virtuels avec la commande suivante purepw useradd toto u ftpuser d ledossierdetoto remarque le dossier ledossierdetoto indiqué sera créé automatiquement à la première connexion si le fichier etc pureftpd conf createhomedir contient yes il est possible de changer le mot de passe avec la commande suivante purepw passwd toto il est possible de modifier un utilisateur avec la commande suivante purepw usermod toto d unautredossierpourtoto il est possible également de modifier directement le fichier etc pureftpd pureftpdpasswd  attention  après chaque création ou modification d un utilisateur il faut générer la base de données avec la commande suivante purepw mkdb pour finir il faut créer un lien symbolique pour activer l authentification des utilisateurs virtuels cd etc pureftpd auth ln s conf puredb 50puredb remarque le dossier etc pureftpd auth contient un lien symbolique pour chaque méthode d authentification acceptée pour désactiver l accès ftp aux comptes du système linux il faut mettre no dans le fichier etc pureftpd conf pamauthentication et recharger la configuration gérer les utilisateurs de pureftpd dans mysql il faut commencer par créer un fichier de configuration lisible uniquement par root chmod 600 pour des raisons de sécurité ce fichier de configuration peut être enregistré n importe où comme dans etc pureftpdmysqlconf exemple de fichier de configuration mysqlserver localhost mysqlport 3306 mysqlsocket tmp mysqlsock mysqluser root mysqlpassword rootpw mysqldatabase pureftpd mysqlcrypt cleartext mysqlgetpw select password from users where user l mysqlgetuid select uid from users where user l mysqlgetgid select gid from users where user l mysqlgetdir select dir from users where user l ensuite il faut lancer pureftpd avec l option suivante usr local bin pureftpd login mysql etc pureftpdmysqlconf il est possible de mélanger une authentification avec mysql et sur les comptes unix usr local bin pureftpd login mysql etc pureftpdmysqlconf use login unix pureftpd est très flexible et les utilisateurs peuvent être stockés dans une table sql quelconque il faut simplement qu elle contienne les informations suivantes le login de l utilisateur le mot de passe stocké au format plaintext md5 crypt ed ou mysql s password l uid système sous forme numérique ou alphanumérique le gid système sous forme numérique ou alphanumérique le chemin du répertoire utilisateur voici un exemple de description de table create table users user varchar 16 not null default password varchar 64 not null default uid varchar 11 not null default gid varchar 11 not null default dir varchar 128 not null default primary key user en fonction du nom de la table et des champs il faut donc adapter le fichier de configuration pureftpdmysqlconf mysqlgetpw select password from users where user l mysqlgetuid select uid from users where user l mysqlgetgid select gid from users where user l mysqlgetdir select dir from users where user l pour chaque query il faut utiliser les codes suivants l représente le login i représente l adresse ip du client p représente le port de connexion r représente l adresse ip du client il est possible d utiliser les codes précédents dans les requêtes sql pour retrouver la bonne information il est possible de supprimer les uid et gid des champs des tables et d utiliser des valeurs par défaut avec les lignes suivantes dans le fichier pureftpdmysqlconf exemple mysqldefaultuid 1000 mysqldefaultgid 1000 il existe d autres options facultatives mysqlgetqtafs permet de déterminer le nombre de fichiers qu un utilisateur peut enregistrer dans son dossier exemple mysqlgetqtafs select quotafiles from users where user l mysqlgetqtasz permet de limiter la taille maximum en mo qu un utilisateur peut mettre dans son dossier exemple mysqlgetqtasz select quotasize from users where user l il y a également deux options pour les ratios mysqlgetratioul select ulratio from users where user l mysqlgetratiodl select dlratio from users where user l deux options pour limiter la bande passante à l upload et au dowload en kb s mysqlgetbandwidthul select ulbandwidth from users where user l mysqlgetbandwidthdl select dlbandwidth from users where user l par défaut et pour des raisons de sécurité il n est pas possible de mettre un user root ou un iud id à 0 comme utilisateur dans mysql annexe détail des switches de pureftpd option courte option gnu commentaire 0 mdash notruncate cette option permet de renommer automatiquement un fichier si un autre du même nom existe déjà sur le serveurcette option est incompatible avec les quotas virtuels 1 mdash logpid log le pid de chaque session dans syslog 4 mdash ipv4only écoute uniquement les connections ip v4 6 mdash ipv6only écoute uniquement les connections ip v6 a mdash trustedgid seulement les membre du groupe peuvent se connecter a mdash chrooteveryone chroot tous les utilisateurs b mdash daemonize démarrer le serveur en mode standalone en daémon c mdash maxclientsnumber autorise au maximum clients à se connecter simultanément au serveur défaut 50 c mdash maxclientsperip nombre maximum de connexions simultanées par client adresse ip d mdash verboselog envoie des messages de débugage dans syslog a utiliser seulement en cas de problème pour avoir également les log de réponses il faut doubler ce paramètre d mdash displaydotfiles affiche les fichiers commençant par un point paramètre à activer pour les puristes et à désactiver pour les simples utilisateurs e mdash anonymousonly autorise uniquement les utilisateurs anonymes a utiliser uniquement pour les sites ftp publiques e mdash noanonymous autorise uniquement les utilisateurs authentifiés les utilisateurs anonymes sont interdits f mdash syslogfacility indique la facility à utiliser pour syslog défaut local2 f none permet de désactiver les logs f mdash fortunesfile affiche une ligne de texte aléatoire à la connexion en provenance du fichier fortune file ex astuce du jour pour afficher un texte à la connexion il faut également utiliser cette option g mdash pidfile change l adresse du fichier pid quand l serveur est exécuté en mode standalone défaut var run pureftpdpid h mdash dontresolve par défaut les noms pleinement qualifiés sont logués en faisant une requête dns inverse sur l adresse ip cette option permet d éviter de rechercher le nom pleinement qualifié dans le but d accélérer le temps de connexion cette option est donc conseillée pour les sites publiques très chargés i mdash anonymouscantupload interdit l accès en écriture sur le serveur upload pour les utilisateurs anonymes i mdash maxidletime change la durée de connexion maximum en minutes défaut 15 j mdash createhomedir crée automatiquement le home de l utilisateur s il n existe pas k mdash maxdiskusage interdit les chargements sur le serveur upload si la partition utilisée est chargée à plus de k mdash keepallfiles autorise les utilisateurs à charger des fichiers sur le serveur mais les interdit de les renommer ou les supprimer l mdash login or ajoute une nouvelle règle d authentification l mdash limitrecursion cette option permet d éviter le nombre de fichiers listes et le nombre de niveau de recherches pour éviter les déni de services défaut 2000 fichiers et 5 niveaux de répertoire m mdash maxload interdit les téléchargements anonymes si la charge du cpu atteint m mdash anonymouscancreatedirs autorise les utilisateurs anonymes à créer des répertoires n si le serveur supporte les quotas virtuels cette option permet de les configurer n mdash natmode mode nat o mdash altlog enregistre les logs des fichiers transférés dans un fichier spécifique plusieurs formats sont supportés clf apachelike stats w3c and xferlogpar exemple le format stats ressemble à  p mdash passiveportrange permet de modifier les ports sur lesquels le serveur écoute p mdash forcepassiveip force l adresse ip ou le nom de la machine pour le retour q mdash anonymousratio active les ratios pour les utilisateurs anonymes q mdash userratio active les ratios pour tous les utilisateurs r mdash autorename ne jamais écraser un fichier existant le fichier est automatiquement renommé si c est nécessaire r mdash nochmod interdit aux utilisateurs d utiliser les commandes chmod s mdash antiwarez interdit aux utilisateur anonymes de télécharger des fichiers t mdash userbandwidth or active la limitation de la bande passante en kilobytes seconds il est possible d avoir une bande passante différente avec la syntaxe t t mdash anonymousbandwidth active la limitation de la bande passante en kbps pour les utilisateurs anonymes il est possible d avoir une bande passante différente avec la syntaxe t u mdash minuid interdit les accès pour les utilisateurs ayant un uid inférieur à celui indiqué u mdash umask change le mask de création des dossiers et des fichiers défaut 133022 v mdash trustedip autorise les accès non anonymes seulement pour l adresse ip spécifiée les autres adresses ip auront un accès anonyme x mdash prohibitdotfileswrite interdit les utilisateurs anonymes à écrire des fichiers commençant par un point x mdash prohibitdotfilesread interdit les utilisateurs anonymes à lire et écrire des fichiers commençant par un point y mdash peruserlimits permet de limiter le nombre de sessiond simultanées qu un utilisateur peut ouvrir défaut 0 illimités z mdash allowdotfiles autorise les utilisateurs anonymes à lire les fichiers et les dossiers commençant par un point exemple usr local sbin pureftpd y 320 c 15 c 5 b 3 connexions maximum pour le même utilisateur 20 connexions maximum pour les utilisateurs anonymes 15 sessions maximum 5 connections maximum pour la même adresse ip du client serveur en mode daemon autres liens la documentation officielle  http wwwpureftpdorg project pureftpd doc historique des modifications version date commentaire 01 161105 création par tony galmiche 02 200806 mise en ligne  installation et configuration du serveur ftp pureftpd sous de bonjour tony très bien ton article ce la me rappelle qu il faut que j apprennes à utiliser la macro pour l article sur le forwarding ssh a mardi si la santé me le permet patrice  installation et configuration du serveur ftp pureftpd sous de bonsoir patrice merci pour la relecture bonne santé même si c est pas le nouvel an et à bientôt tony installation et configuration du serveur ftp pureftpd sous debi bon tuto pour d autre information il y a aussi ce tuto http serveurhaksynfreefr hsncity viewtopicphp t 4 sa peut toujour aider du monde  installation et configuration du serveur ftp pureftpd sous debi bonjour super tuto merci mais une question sur le quotas sur les dossiers comment faire pour qu il soit personnalisable pour chaque utilisateurs merci  pureftpd  