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.

