wiki..
Pure-ftpd-mysql

installation

apt-get install pure-ftpd-mysql

Configuration MySQL

-créer un nouvel utilisateur MySQL avec tous les privilèges sur une table pureftpd.

-modifier le fichier de configuration /etc/pure-ftpd/db/mysql.conf pour spécifier nos accès.

# Nom de l'utilisateur MySQL à utiliser
MYSQLUser       pureftpd
# Password de cet utilisateur
MYSQLPassword   VOTRE_PASS_PUREFTPD_MYSQL
# Nom de la base de données à utiliser
MYSQLDatabase   pureftpd
# Important: Mode de cryptage des mots de passe, choisissez MD5 au lieu de cleartext !
MYSQLCrypt      md5
# Requêtes MySQL
MYSQLGetPW      SELECT Password FROM users WHERE User="\L"
MYSQLGetUID     SELECT Uid FROM users WHERE User="\L"
MYSQLGetGID     SELECT Gid FROM users WHERE User="\L"
MYSQLGetDir     SELECT Dir FROM users WHERE User="\L"

-creation de la table dans mysql

CREATE TABLE users (
 User varchar(16) NOT NULL default '',
 Password varchar(64) NOT NULL default '',
 Uid varchar(11) NOT NULL default '',
 Gid varchar(11) NOT NULL default '',
 Dir varchar(128) NOT NULL default '',
 PRIMARY KEY  (User)
 );

-insérez un nouvel utilisateur virtuel dans la table users.

INSERT INTO `users` ( `User` , `Password` , `Uid` , `Gid` , `Dir` )
VALUES ('web', MD5( 'PASS_FTP_USER' ) , '2001', '2001', '/var/www/');

Options de configuration

Pour que chaque utilisateur puisse uniquement accéder au dossier qui lui est attribué, nous allons le chrooter.

vim /etc/pure-ftpd/conf/ChrootEveryone

Et entrez simplement "yes", sauvegardez et quittez.

Dans le cas où le répertoire associé à l'utilisateur virtuel n'existe pas, au lieu de provoquer une erreur, nous allons demander à pure-ftpd de le créer:

vim /etc/pure-ftpd/conf/CreateHomeDir

Même chose, un simple "yes" dans le fichier suffit.


Configuration système

Il faut que nos utilisateurs virtuels utilisent un utilisateur système spécifique pour faciliter la sécurité.

Nous allons donc créer un groupe ftpgroup et un utilisateur système ftpuser:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

Ainsi nous spécifierons 2001 pour le GID et UID lors de la création d'utilisateurs virtuels.


Lancement du serveur

/usr/sbin/pure-ftpd-mysql -4 -A -B -c 50 -C 4 -D -E -H -I 15 -j -k 90 -f ftpuser -L 7500:8 -m 4 -s -u 500 -U 033:012 -z -l mysql:/etc/pure-ftpd/db/mysql.conf

en cas d'erreur 530

vim /usr/sbin/pure-ftpd-wrapper

modifier les lignes:

my $daemon = '/usr/sbin/pure-ftpd';
my @capabilities = @ARGV;
if ($ARGV[0]) {
  $daemon = "$daemon-$ARGV[0]";
}

par

my $daemon = '/usr/sbin/pure-ftpd-mysql';
my @capabilities = @ARGV;
#if ($ARGV[0]) {
#  $daemon = "$daemon-$ARGV[0]";
#}

killer le PID du daemon pure-ftpd (ne pas utiliser /etc/init.d/pure-ftpd-mysql restart) puis :

/usr/sbin/pure-ftpd-mysql -4 -A -B -c 50 -C 4 -D -E -H -I 15 -j -k 90 -f ftpuser -L 7500:8 -m 4 -s -u 500 -U 033:012 -z -l mysql:/etc/pure-  ftpd/db/mysql.conf


Sources pour aller plus loin :

http://coagul.org/drupal/node/407/

http://www.pureftpd.org/project/pure-ftpd/doc