Installer le serveur FTP Proftpd avec le module MySQL et stocker les utilisateurs dans une base de données MySQL sous Linux Debian Lenny

21/12/2010 - 23431 consultations - 10 commentaires


Ce tutoriel vous présente comment installer le serveur FTP Proftpd lié à MySQL sous Linux Debian Lenny ainsi que la gestion de vos utilisateurs dans une table MySQL

Lorsque vous avez beaucoup d'utilisateurs devant envoyer des données sur vos serveurs via FTP, il n'est pas forcément nécessaire de créer un compte utilisateur local à chacun. Il peut être alors intéressant d'utiliser des utilisateurs stockés dans une base de données MySQL à l'aide du module MySQL de ProFTPd - ici grâce à ProFTPd.

Cette installation vous permettra de gérer vos utilisateurs dans une table mysql.
 
Les droits des fichiers uploadés seront : utilisateur ftp et groupe www-data
Il est donc nécessaire qu'apache2 par exemple soit déjà installé.

L’exemple suivant utilisera :
La base : proftpd
La table : utilisateur
L’utilisateur mysql : userftp
Avec comme mot de passe : passftp

Nous allons donc commencer par installer Proftpd, rien de plus simple :
apt-get update
apt-get install proftpd

Les paquets supplémentaires suivants seront installés :
  libcap1 proftpd-basic proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql
Paquets suggérés :
  proftpd-doc
Les NOUVEAUX paquets suivants seront installés :
  libcap1 proftpd proftpd-basic proftpd-mod-ldap proftpd-mod-mysql
  proftpd-mod-pgsql
0 mis à jour, 6 nouvellement installés, 0 à enlever et 0 non mis à jour.
……
Starting ftp server: proftpd.
Paramétrage de proftpd-mod-mysql (1.3.1-17lenny4) ...
Paramétrage de proftpd-mod-pgsql (1.3.1-17lenny4) ...
Paramétrage de proftpd-mod-ldap (1.3.1-17lenny4) ...
Paramétrage de proftpd (1.3.1-17lenny4) ...

Installer le module proftpd-mod-mysql :
apt-get install proftpd-mod-mysql

Activer la gestion des modules SQL :
nano /etc/proftpd/modules.conf

Décommenter les lignes suivantes :
LoadModule mod_sql.c
LoadModule mod_mysql.c

Ajouter le paramétrage de la gestion des utilisateurs par mysql :
nano /etc/proftpd/proftpd.conf
 
Ajouter la section suivante :
<Global>
        ServerIdent     Off
        IdentLookups    Off
 
        # Set the user and group that the server normally runs at.
        User            ftp
        Group           www-data
 
        CreateHome      on 711
        SQLAuthTypes    Crypt
        SQLBackend      mysql
        SQLAuthenticate users
        SQLConnectInfo  proftpd@localhost userftp passftp
        SQLUserInfo     utilisateur nom mot_de_passe uid gid repertoire shell
        SQLDefaultUID   XXX
        SQLDefaultGID   XX
        SQLMinID        100
        AllowOverWrite  on
        AllowForeignAddress     on
        ListOptions "-a"
        <Directory ~>
           AllowOverWrite on
        </Directory>
 
        DefaultRoot ~

        SQLLogFile /var/log/proftpd/mysql.log
        ExtendedLog /var/log/proftpd/auth.log AUTH auth
 
</Global>
 
Remplacer XX par le GID du groupe www-data :
cat /etc/group | grep www-data
www-data:x:33:
Donc XX = 33

Remplacer XXX par le UID de l’utilisateur ftp :
cat /etc/passwd | grep ftp
ftp:x:106:65534::/home/ftp:/bin/false
Donc XXX = 106
 
Se connecter à MySQL et créer la base de données et la table qui va bien :
mysql -u root -proot_password

CREATE DATABASE proftpd ;

USE proftpd;
 

CREATE TABLE `utilisateur` (
  `nom` varchar(50) NOT NULL default '',
  `mot_de_passe` varchar(30) NOT NULL default '',
  `uid` int(11) default '101',
  `gid` int(11) default '65534',
  `repertoire` varchar(255) default NULL,
  `shell` varchar(255) default '/bin/sh',
  UNIQUE KEY `nom` (`nom`),
  KEY `i_nom` (`nom`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Insérer un nouvel utilisateur :
INSERT INTO utilisateur VALUES (‘xenetis’, encrypt(‘password_xenetis’), ‘106’, ‘33’, ‘/home/www/xenetis.org’, ‘/bin/sh’) ;
 
On créé le dossier correspondant à l’utilisateur FTP avec les bons droits :
mkdir /home/www/xenetis.org
chown ftp:www-data /home/www/xenetis.org

Enfin on redémarre le service Proftpd pour prendre en compte les changements :
/etc/init.d/proftpd restart

Commentaires (10)

cyrille - 29/08/2011 à 11h14
Bonjour,

Il y a une petite erreur dans la syntaxe de l'insertion d'un user en base, il manque le "VALUES" avant la parenthèse :

INSERT INTO utilisateur VALUES (‘xenetis’, encrypt(‘password_xenetis’), ‘106’, ‘33’, ‘/home/www/xenetis.org’, ‘/bin/sh’) ;

Merci pour ce petit tuto.
A+
CYD

Nicolo - 16/11/2011 à 09h08
Merci bien !!!!
C'est corrigé ;-)

mahdi - 05/01/2012 à 21h45
Merci beaucoup pour ce tuto !

Nicolo - 06/01/2012 à 09h49
De rien, heureux que ça vous serve !!!

Tellurian - 15/04/2012 à 20h18
Merci pour ce tuto, hélàs proftpf ne démarre pas à cause d'une directive non prise en charge.. une idée ?

/etc/init.d/proftpd restart
Stopping ftp server: proftpd.
Starting ftp server: proftpd - Fatal: unknown configuration directive 'SQLAuthTypes' on line 187 of '/etc/proftpd/proftpd.conf'

Nicolo - 16/04/2012 à 09h59
As-tu bien activé les modules MySQL :
LoadModule mod_sql.c
LoadModule mod_mysql.c
MySQL est-il démarré ?

Tellurian - 16/04/2012 à 13h55
^^' C'est bon, j'avais oublié de dé-commenter dans le fichier conf après ré-installation.

Nicolo - 16/04/2012 à 14h04
Cool alors ;-)

Yumito - 02/01/2013 à 09h57
Thank you for your help. I used the second aorcpaph to get past configuring MySQL to have root access from remote machine. Here is what I did: From command line, log in mysql (mysql -h localhost -u root -p)>)mysql> use mysqlmysql> ALTER TABLE `user` CHANGE COLUMN `authentication_string` `authentication_string` TEXT NULL COLLATE 'utf8_bin' AFTER `plugin`; This operation should succeed.Configure MySQL again (with root access allowed for remote machine checked) and the operation should succeed this time.

Henri - 20/05/2015 à 21h20
Merci beaucoup, tuto simple, efficace et rapide :)

et toujours d\'actualité après 5 ans \\o/

Commentez cet article

Nom (obligatoire)
E-mail (obligatoire)
Site Internet (facultatif)
code anti-spam

Me tenir inform� des nouveaux messages


mycomputer.pngInstaller le serveur FTP Proftpd avec le module MySQL et stocker les utilisateurs dans une base de données MySQL sous Linux Debian Lenny
Ce tutoriel vous présente comment installer le serveur FTP Proftpd lié à MySQL sous Linux Debian Lenny ainsi que la gestion de vos utilisateurs dans une table MySQL
terminal.pngServeur ftp proftpd avec utilisateurs virtuels sous linux debian ubuntu
Ce tutoriel vous présente comment installer le serveur ftp proftpd à partir des paquets debian. Pour éviter de créer autant d'utilisateurs Linux que de compte FTP il est possible de créer des utilisateurs virtuels seulement disponibles pour le serveur FTP
encrypted.pngCorriger l'erreur There is no public key available for the following key IDs après apt-get update
Ce mini tutoriel vous explique comment corriger l'erreur There is no public key available for the following key IDs
mycomputer.pngMise à jour de votre distribution Linux Debian 5.0 Lenny à Linux Debian 6.0 Squeeze
Ce tutoriel vous indique comment mettre à jour votre distribution Linux Debian 5.0 Lenny à Linux Debian 6.0 Squeeze
mycomputer.pngOutils intéressants sous Linux
Voici quelques outils intéressants pour vous faciliter la vie sous Linux : nmap, nslookup
encrypted.pngConnexion ssh sous debian sarge avec clé publique - privée
Ce tutoriel vous présente comment vous connecter sur votre serveur Linux en ssh, scp, sftp à partir de Windows avec clé publique privée
kcmdevices.pngForcer umount quand vous avez le message : device is busy sous Linux Debian
Ce mini tutoriel vous présente comment Démonter un point de montage quand celui ci ne veux pas être démonté
mycomputer.pngInstaller le serveur FTP Proftpd et stocker les utilisateurs dans une base de données MySQL sous Linux Debian Squeeze avec mots de passe encryptés en MD5
Ce tutoriel vous présente comment installer le serveur FTP Proftpd lié à MySQL sous Linux Debian Squeeze ainsi que la gestion de vos utilisateurs dans une table MySQL avec encryption des mots de passe en MD5
terminal.pngInstallation d'Apache 2.0 et PHP 5.1
Tutoriel d'installation d'Apache 2.0 et PHP 5.1 sous Debian Sarge à partir des paquets backports.org