# Proftpd

## Installation

Paquets necessaires : `proftpd`,`proftpd-mysql`, `mysql`.

## Configuration

 - `/etc/proftpd.conf` : fichier de configuration principal, il faudrait éviter de l'éditer directement.
 - `/etc/proftpd` : dossier contenant la suite de la configuration séparée en différement fichiers en fonction des fonctionnalités :
   - `/etc/proftpd/modules.conf` : contient la liste des modules proftpd chargés ;
   - `/etc/proftpd/sql.conf` : configuration de la liaison avec mysql pour gérer les utilisateurs virtuels (actuellement l'authentification mysql est la méthode principale et authoritaire);
   - `/etc/proftpd/tls.conf`: configuration du chiffrage des connexion avec TLS.


## Gestion des utilisateurs avec MySQL

La base de donnée utilisée pour l'authentification est `timonier`, accessible avec l'utilisateur homonyme, le mot de passe peut être trouvé dans le fichier de configuration de sql pour proftpd (voir ci-dessus).

La structure de la base de donnée est la suivante :
 - Table `ftpusers`, le mot de passe du  champs `password` doit être hashé avec la méthode native de mysql `PASSWORD()`:

| id | username | password | uid | gid | homedir | shell |
| ---| -------- | -------- | --- | --- | ------- | ----- |

 - Table `ftpgroups`, doit contenir une entrée pour chaque utilisateur de la table `ftpuser` :

| groupname | gid | members |
| --------- | --- | ------- |


Pour plus de renseignements sur les type des champs, le script suivant à été utilisé pour créer la base de donnée :

```sql
drop table if exists ftpusers;
drop table if exists ftpgroups;

create table `ftpusers` (
        `id` int(10) unsigned not null auto_increment,
        `username` varchar(32) not null,
        `password` varchar(42) not null,
        `uid` smallint(6) not null,
        `gid` smallint(6) not null,
        `homedir` varchar(255) not null,
        `shell` varchar(32) not null,
        primary key(`id`),
        unique key (`username`, `uid`)
) engine=InnoDB default charset=utf8;

create table `ftpgroups` (
        `groupname` varchar(32) not null,
        `gid` smallint(10) not null,
        `members` varchar(255) default ''
) engine=InnoDB default charset=utf8
```