Pureftp

Un article de WindowsLinux.Net - Astuces pour Windows et Linux.

Sommaire

Définition

Pureftp est un serveur FTP très sympathique.

Il permet entre autre de stocker les utilisateurs dans une base de données MySQL, avec certaines options intéressantes.

Installation

Le plus simple est d'utiliser aptitude, ou yum.

Exemple, avec le serveur web Apache, MySQL et pure-ftpd :

yum install httpd
yum install mysql-server
yum install pure-ftpd-selinux


En option, afin de se simplifier la vie, on peut aussi installer PHPMyAdmin :

yum install phpMyAdmin


Lancer MySQL, et donnez un mot de passe à root :

/usr/bin/mysqld_safe


Si besoin, utiliser : /usr/bin/mysql_install_db

ou consulter : http://dev.mysql.com/doc/refman/5.0/fr/default-privileges.html

http://dev.mysql.com/doc/refman/5.0/fr/resetting-permissions.html


Configuration d'Apache/Mysql/PHPMyAdmin

D'autres informations disponible sur la page de phpmyadmin

On peut modifier un fichier spécifique pour avoir accès à phpMyAdmin qu'a partir d'une certaine adresse IP :

vi /etc/httpd/conf.d/phpMyAdmin.conf


Pour les lignes suivantes :

<Directory /usr/share/phpMyAdmin/>
   order deny,allow
   deny from all
   allow from mon.DNS.ou.mon.IP.net
</Directory>


On continue sur la configuration de phpMyAdmin :

vi /etc/phpMyAdmin/config.inc.php


On peut aussi changer la page d'accueil par défaut d'Apache :

vi /etc/httpd/conf.d/welcome.conf


Et la configuration de PHP peut elle aussi être personnalisée :

vi /etc/httpd/conf.d/php.conf


Et enfin, pour appliquer tout ça, on redémarre Apache :

httpd -k restart

Configuration de PureFTP

Rien ne remplace les fichiers README.

Il faut lire : README et README.MySQL.


Il faut éditer les fichiers de configuration de pureftp :

vi /etc/pure-ftpd/pure-ftpd.conf
vi /etc/pure-ftpd/pureftpd-mysql.conf


Il n'est pas nécessaire dans ce type d'installation (yum) de spécifier quel fichier utiliser lors du lancement de pureftp.

Le 1er fichier lu sera pure-ftpd.conf, ensuite sera lu les autres fichiers de configuration, tel que pureftpd-mysql.conf, et appliqués si besoins (et commentaires des lignes à appliquer supprimées dans ces fichiers).


Création de des données d'authentification dans MySQL

Il faut créer la base de données MySQL en rapport avec notre fichier de configuration (ici la base est nommée "users") :

CREATE TABLE users (
  User VARCHAR(16) BINARY NOT NULL,
  Password VARCHAR(64) BINARY NOT NULL,
  Uid INT(11) NOT NULL DEFAULT '-1',
  Gid INT(11) NOT NULL DEFAULT '-1',
  Dir VARCHAR(128) BINARY NOT NULL,
  ULBandwidth INT(11) NOT NULL DEFAULT '50',
  DLBandwidth INT(11) NOT NULL DEFAULT '50',
  PRIMARY KEY  (User)
);


On fera attention de crypter le mot de passe en md5 dans phpmyadmin en ajoutant un nouvel utilisateur si on a sélectionné "md5" dans le fichier de configuration.

Lancement du serveur FTP

/etc/init.d/pure-ftpd start
/etc/init.d/pure-ftpd status


Création du mode TLS / de certificats

ll -lah /etc/pki/pure-ftpd/
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/pure-ftpd/pure-ftpd.pem -out /etc/pki/pure-ftpd/pure-ftpd.pem
chmod 600 /etc/pki/pure-ftpd/*.pem

Commentaires : on vérifie que le répertoire existe bien, on crée la clé (rsa 1024 bits), et on y attribue des droits spécifiques pour des raisons de sécurité.

On vérifie que le TLS est bien activé dans le fichier de configuration :

vi /etc/pure-ftpd/pure-ftpd.conf


Commentaires sur les répertoires des utilisateurs

Si on utilise des groupes spécifiques (fortement conseillés), on créera un groupe nommé par exemple "ftpgroup", on vérifira son GID (vi /etc/group) et on appliquera ce chiffre dans le champ GID de la base de données. Sinon, pour un accès à "tout le monde" :

chown -R nobody:nobody incoming/
chmod -R 555 /home/user/
chmod -R 331 /home/user/incoming/

chmod -R 555 sur /home/user permet aux utilisateurs de voir et de télécharger les fichiers, mais pas de les modifier.

chmod -R 331 sur incoming permet aux utilisateurs d'envoyer les fichiers, mais nullement de les voirs, avant déplacement par l'utilisateur principal.

Welcome messages

Enfin, des fichiers spécifiques ".banner" et ".message" peuvent être crées pour avertir les utilisateurs de changements spécifiques.

Problèmes connus

"/etc/init.d/pure-ftpd-mysql start" ne donne rien

Il se peut que la commande /etc/init.d/pure-ftpd-mysql start ne renvoie aucun message : ni d'erreur, ni de réussite, et que le serveur FTP ne démarre pas.


La solution se trouve dans le fichier :

/etc/default/pure-ftpd-common

Ce fichier contient la ligne suivante :

STANDALONE_OR_INETD=inetd

Vous pouvez changer la valeur inetd par standalone pour avoir :

STANDALONE_OR_INETD=standalone

La commande /etc/init.d/pure-ftpd-mysql start fonctionnera.

Il est cependant recommandé de redémarrer la machine, pour relancer inetd, et ainsi automatiser le lancement du serveur ftp au démarrage de celle-ci, au lieu de nécessiter un démarrage manuel.

Can't exec "/usr/sbin/pure-ftpd": No such file or directory at /usr/sbin/pure-ftpd-wrapper line 174.

Lors de la connexion avec un client FTP, il se peut que le message d'erreur suivant vous soit retourné :

Can't exec "/usr/sbin/pure-ftpd": No such file or directory at /usr/sbin/pure-ftpd-wrapper line 174.

Il faut juste créer un lien symbolique vers pure-ftpd. Le programme pure-ftpd-wrapper nécessite ce lien symbolique pour lancer le service nommé "pure-ftpd".

Tapez donc la commande suivante :

ln -s /usr/sbin/pure-ftpd-mysql /usr/sbin/pure-ftpd

F.A.Q.

Où se trouve le fichier de configuration MySQL de PureFTP ?

Le fichier se trouve (sous debian etch) à cet emplacement :

/etc/pure-ftpd/db/mysql.conf

Il est parfois conseillé d'activer les lignes :

MYSQLDefaultUID 1000

et

MYSQLDefaultGID 1000

Noms d'utilisateurs

Le nom d'utilisateur :

ftp

est considéré comme "anonyme".

Vous ne pourrez pas vous connecter avec un utilisateur ayant ce nom, si les connexions anonymes sont interdites.