Proftpd avec base MySql

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

http://www.6ma.fr/astuce/votre+proftpd+est+lent-252

Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec une *

Quelle est le dernier caractère du mot n2p6kat ? :