Après avoir installé et testé ProFTPd sur un serveur Debian, j’ai également besoin d’un serveur FTP sur le serveur Ubuntu que j’ai à la maison. On m’a conseillé sur la Mailing List du BxLUG de mettre Pure-FTPd ! « C’est mieux, c’est plus sécure, plus d’option, etc »…
Oui, pourquoi pas… La meilleur façon de savoir est de faire l’installation et de comparer
Je vais faire cette installation sur un serveur Ubuntu, mais la presque totalité des commandes fonctionnent aussi sous Debian et même sur la plupart des distributions Linux. En général en Debian, on passe en « root » avec la commande » su – » et on n’utilise pas « sudo ». A part cela, c’est presque identique
J’ai trouvé plusieurs documentations assez claires sur le net :
- Installation et configuration du serveur FTP Pure-FTPd sous Debian sur le site Coagul
- Pureftpd Server Configuration in Debian de DebianHelp
- Howto install pureftpd on a debian machine de Debian-Administration
- Installer et configurer un serveur FTP : pure-ftp de DebianAddict
L’explication la plus claire, et en français ce qui est toujours pratique même si l’anglais technique ne me pose aucun problème, est celle de Tony sur le site Coagul.
Commençons par installer le package Pure-FTPd, qui fait partie de la liste des paquets nativement disponibles, aussi bien dans Ubuntu que Debian. La commande est classique :
$ sudo aptitude install pure-ftpd
[sudo] password for didier:
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Construction de la base de données des étiquettes... Fait
Les NOUVEAUX paquets suivants vont être automatiquement installés :
pure-ftpd-common
Les NOUVEAUX paquets suivants vont être installés :
pure-ftpd pure-ftpd-common
0 paquets mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 321ko d'archives. Après dépaquetage, 901ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] Y
...
On pourrait dire « ok, c’est bon. C’est fini ! »
En effet, comme souvent lors d’une installation, Pure-FTPd est démarré avec des paramètres par défaut, qui sont suffisants pour une utilisation de base.
Vérifions cela :
$ ps -A|grep ftp 10068 ? 00:00:00 pure-ftpd
$ ftp 127.0.0.1 Connected to 127.0.0.1. 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 220-You are user number 1 of 50 allowed. 220-Local time is now 02:28. Server port: 21. 220-This is a private system - No anonymous login 220-IPv6 connections are also welcome on this server. 220 You will be disconnected after 15 minutes of inactivity. Name (127.0.0.1:didier): didier 331 User didier OK. Password required Password: 230-User didier has group access to: didier sambasha admin lpadmin 230- scanner plugdev video dip audio floppy cdrom dialout 230- adm 230 OK. Current directory is /home/didier Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Connecting to port 36573 -rw-r--r-- 1 root root 2 Jun 27 08:31 atop.log drwxr-xr-x 7 didier didier 4096 Apr 16 02:41 download drwxr-xr-x 3 didier didier 4096 Apr 17 2008 images -rw------- 1 didier didier 1442 Dec 29 2007 mbox ...
C’est bien mon dossier « Home » sur ce serveur.
Donc par défaut Pure-FTPd accepte au logon les utilisateurs qui sont connus du système Linux.
C’est logique.
Je voudrais créer des utilisateurs virtuels, différents des utilisateurs Linux, ce qui me permettrait d’avoir des utilisateurs ayant accès FTP mais pas accès en console système !
Je continue le paragraphe de la documentation sur la création des utilisateurs virtuels.
La configuration de Pure-FTPd est un peu déroutante. Tout se trouve dans /etc/pure-ftpd, dans des sous-dossiers.
Mais Pure-FTPd ne lit pas directement ces fichiers. Il doit avoir ces paramètres passés en ligne de commande au moment du démarrage. il est nécessaire de taper une commande pour regénérer cette ligne de commande pour que des modifications soient prises en compte. De la même façon, l’ajout d’utilisateurs demande une commande spéciale.
Je commence par créer un groupe « ftpgroup » et un utilisateur système « ftpuser », qui sera utilisé par Pure-FTPd lors de l’accès d’un utilisateur. Attention, bien qu’utilisateur système, « ftpuser » n’aura PAS accès au système :
# sudo groupadd ftpgroup # sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Je crée l’utilisateur FTP « uploadblog » qui n’existe pas en Linux, mais qui doit avoir un accès FTP sur le dossier de mon blog.
L’ajout d’un utilisateur virtuel dans Pure-FTPd doit se faire au moyen de la commande « pure-pw useradd … » :
# sudo pure-pw useradd uploadblog -u ftpuser -g ftpgroup -d /home/www/didier/blog -N 10
Password:
Enter it again:
Le paramètre » -d » va forcer l’utilisateur à rester dans ce dossier (« chrooté »).
Pour un utilisateur « normal », on mettrait son dossier « /home/utilisateur ».
Le paramètre » – N 10 » fixe son quota à 10 MB.
Il faut générer la base de données de Pure-FTPd, et le faire à chaque ajout ou suppression d’utilisateur !
$ sudo pure-pw mkdb
« pure-pw usermod … » permet aussi de modifier les paramètres d’un utilisateur.
Je vais augmenter le quota avec la commande :
# sudo pure-pw usermod uploadblog -N 100
Les utilisateurs sont sauvés dans le fichier « /etc/pure-ftpd/pureftpd.passwd ».
Relisons le fichier password de Pure-FTPd :
# sudo less /etc/pure-ftpd/pureftpd.passwd
uploadblog:$1$NuHzxvs0$3PwulPUV3tgVFZwbCIghy/:1005:1005::/home/www/didier/blog/./:::::::104857600:::::
Le quota est effectivement de 100 MB.
Si vous devez supprimer cet utilisateur, la commande est :
# sudo pure-pw userdel uploadblog -m
Le » – m » met à jour le fichier Password et valider la mise à jour de l’index dans ce fichier (je crois…).
La commande « pure-pw passwd » permet de modifier le mot de passe d’un utilisateur :
$ sudo pure-pw passwd uploadblog
Password:
Enter it again:
La commande « pure-pw list » liste les utilisateurs :
$ sudo pure-pw list
uploadblog /home/www/didier/blog/./
Il est possible d’afficher les détails pour un utilisateur :
$ sudo pure-pw show uploadblog
Login : uploadblog Password : $1$NuHzxvs0$3PwulPUV3bvVFZwbCIghy/ UID : 1005 (ftpuser) GID : 1005 (ftpgroup) Directory : /home/www/didier/blog/./ Full name : Download bandwidth : 0 Kb (unlimited) Upload bandwidth : 0 Kb (unlimited) Max files : 0 (unlimited) Max size : 100 Mb (enabled) Ratio : 0:0 (unlimited:unlimited) Allowed local IPs : Denied local IPs : Allowed client IPs : Denied client IPs : Time restrictions : 0000-0000 (unlimited) Max sim sessions : 0 (unlimited)
N’oubliez pas de relancer la commande « pure-pw mkdb » après toute modification !
$ sudo pure-pw mkdb
Cela devrait être bon.
Arrêtons la version Pure-FTPd.
On peut démarrer Pure-FTPd comme test, avec la commande :
$ sudo /etc/init.d/pure-ftpd stop Stopping ftp server: pure-ftpd. $ sudo /usr/sbin/pure-ftpd -S 127.0.0.1,21 -c 30 -C 1 -l puredb:/etc/pure-ftpd/pureftpd.pdb -x -E -j -R
On remarque que dans cette commande, Pure-FTPd n’accepte des connexions que depuis LocalHost, càd 127.0.0.1.
Un commande « nmap 127.0.0.1″ en console sur le serveur, montre le service FTP sur le port 21. Par contre, à distance ce service n’est pas disponible.
Faites l’essais avec l’utilisateur virtuel que vous avez créé, cela devrait fonctionner.
Mais si vous démarrez normalement pure-ftpd (comme il le serait lors du boot de votre serveur), votre utilisateur virtuel n’est plus reconnu !
$ sudo /etc/init.d/pure-ftpd start Starting ftp server: Running: /usr/sbin/pure-ftpd -l pam -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -E -B
La méthode d’authentification n’est pas correcte.
Vérifions :
$ cd /etc/pure-ftpd/auth/
$ ls -l total 0 lrwxrwxrwx 1 root root 26 2009-09-07 02:05 65unix -> ../conf/UnixAuthentication lrwxrwxrwx 1 root root 25 2009-09-07 02:05 70pam -> ../conf/PAMAuthentication
J’ai bien créé l’utilisateur et son mot de passe, mais il faut encore mettre un lien dans les dossiers de configuration de Pure-FTPd vers le fichier base de données utilisateurs. C’est une méthode qui me rappelle la config d’Exim4
$ sudo ln -s ../conf/PureDB 50PureDB $ ls -l total 0 lrwxrwxrwx 1 root root 14 2009-09-07 04:13 50PureDB -> ../conf/PureDB lrwxrwxrwx 1 root root 26 2009-09-07 02:05 65unix -> ../conf/UnixAuthentication lrwxrwxrwx 1 root root 25 2009-09-07 02:05 70pam -> ../conf/PAMAuthentication
Et redémarrons Pure-FTPd :
$ sudo /etc/init.d/pure-ftpd start Starting ftp server: Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -l pam -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -E -B
La base de données utilisateurs est maintenant inclue dans la ligne de commande de démarrage.
Effectivement, on peut maintenant se connecter en FTP avec l’utilisateur virtuel « uploadblog ».
Mais, on voit aussi l’authentification PAM, càd que tous les utilisateurs définis en Linux pourront se connecter en FTP en même temps que les utilisateurs virtuels…
Ce n’est pas ce que je voulais. Je vais retirer les méthodes d’authentification non désirées, et ne garder que la base de données :
$ sudo rm 65unix $ sudo rm 70pam $ ls -l total 0 lrwxrwxrwx 1 root root 14 2009-09-07 04:13 50PureDB -> ../conf/PureDB $ sudo /etc/init.d/pure-ftpd restart Restarting ftp server: Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -E -B
Ok ! Il reste la base de données, mais plus PAM.
Je refais un essais. Je peux me logguer en FTP avec mon user virtuel « uploadblog », mais PAS avec mon user système « didier » !
Je peux donc définir des utilisateurs uniquement dans Pure-FTP. C’est exactement ce que je voulais !
Par contre, je n’arrive pas à faire mon upload pour mettre à jour mon site. Cela vient du dossier que j’ai inclu dans l’URL… WordPress n’aime pas ça.
Je corrige donc le dossier « chrooté » pour cet utilisateur avec la commande « pure-pw usermod » :
$ sudo pure-pw usermod uploadblog -d /home/www/didier/
Je ne dois changer que le dossier, donc le paramère » -d … » suffit
Voilà pour PureFTPd avec des utilisateurs virtuels.
Il est possible d’aller plus loin, par exemple de définir les utilisateurs ayant accès FTP dans une base de données MySQL. Je ne ferai pas cette configuration car j’aurai probablement seulement 2 ou 3 userids devant accéder en FTP… Par contre si vous avez des dizaines ou centaines d’utilisateurs à gérer, ce serait intéressant ![]()




















[...] pour permettre des mises à jour « automatique », c’est le userid de Pure-FTP qui est propriétaire du dossier chez [...]
18 septembre 2009 at 1:43[...] http://didier.misson.net/blog/2009/09/09/installation-de-pureftpd/ [...]
24 septembre 2009 at 20:25