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
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
C'est corrigé ;-)
/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'
LoadModule mod_sql.c
LoadModule mod_mysql.c
MySQL est-il démarré ?
et toujours d\'actualité après 5 ans \\o/