On veut un petit serveur FTP sur notre debian toute neuve, afin de pouvoir gérer les fichiers d’un site web. On veut pouvoir gérer les utilisateurs, leurs privilèges et leurs dossiers à partir d’une base MySQL. On a choisi proftpd.
Installation de proftpd
Via ssh, mettez à jour la liste des paquets
apt-get update
apt-get upgrade
Puis installez proftpd et son module mysql
apt-get install proftpd proftpd-mod-mysql
Lors de l’installation, vous devrez choisir entre deux modes de fonctionnement, grosso modo :
from inetd : le serveur FTP sera démarré à la demande : idéal si peu de connexions
standalone : le serveur FTP tournera en permanence, prêt à accpeter des connexions à tout moment : idéal si beaucoup de connexions
On choisi l’option standalone, plus rapide à configurer.
Configuration de proftpd
Modifiez le fichier de configuration /etc/proftpd/proftpd.conf. Décommentez les lignes suivantes.
DefaultRoot ~
Include /etc/proftpd/sql.conf
RequireValidShell off
Editez le fichier de configuration /etc/proftpd/modules.conf, et décommentez les lignes suivantes, afin d’activer le support de mysql.
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
Modifiez le fichier de configuration propre à MySQL : /etc/proftpd/sql.conf.
<IfModule mod_sql.c>
# activer l'authentification via mysql
SQLBackend mysql
# mode de cryptage des mots de passe
SQLAuthTypes Crypt
# informations de connextion
SQLConnectInfo proftpd@localhost root ******
# structure de la table Users
SQLUserInfo ftpuser userid passwd uid gid homedir shell
#structure de la table Groups
SQLGroupInfo ftpgroup groupname gid members
</IfModule>
Créez un groupe et un utilisaeur, ils serviront à transformer les comptes virtuels, stockés dans la base de données, en utilisateur du système.
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
Via Chive, ou PhpmyAdmin, Créez une base de données proftpd et les tables suivantes :
Créez la table pour la liste des groupes d’utilisateurs
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '2001',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) ENGINE=MyISAM COMMENT='ProFTP group table';
Créez la table pour la liste des utilisateurs
CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '2001',
gid smallint(6) NOT NULL default '2001',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) ENGINE=MyISAM COMMENT='ProFTP user table';
Insérez un groupe dans la table « ftpgroup »
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
Insérez un utilisateur dans la table « ftpuser », son nom est « domain.tld », son mot de passe « password », et il a accès uniquement au dossier /var/www/sites/domain.tld/. Vous devrez naturellement créer ce dossier avant de continuer.
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES ('', 'domain.tld', ENCRYPT('password'), 2001, 2001, '/var/www/sites/domain.tld/', '/sbin/nologin', 0, '', '');
Pour accelerer le chargement, ajouter ces lignes à la fi du fichier /etc/proftpd/proftpd.conf
IdentLookups off
UseReverseDNS off
Redémarrez proftpd
/etc/init.d/proftpd restart
Droit sur le répertoire de l’utilisateur.
N’oubliez pas de donner les bons droits sur votre répertoire.
chown -R ftpuser:www-data /votre/repertoire
Vous pouvez à présent vous connecter via votre client FTP
Article tiré/adapté de:
http://www.nicogiraud.com/blog/installation-de-proftpd-mysql-sur-debian.html