Table des matières

Proftpd

Le besoin

Un service FTP capable d'authentifier les utilisateurs du système ainsi que des utilisateurs “virtuels” maintenu dans une base de donnée. Il faudrait également que ces utilisateurs puissent être “chrooté” dans leur home ou non.

Point sur les possibilités de Proftpd

Globalement, il répond à toutes ces attentes.

Lien : Docs mod_sql

Authentification SQL (MySQL ou PgSQL)

* Charger les modules mod_sql.c et mod_sql_postgres.c (ou mod_sql_mysql.c).

Configuration de mod_sql

SQLBackend mysql # 'mysql' ou 'postgres'
SQLConnectInfo proftpd_db@host.sql.org proftpd_user proftpd_pass
SQLEngine on
SQLAuthenticate on
SQLAuthTypes Crypt Plaintext
SQLMinID 69000
SQLDefaultGID 69001

Structure de la base de donnée

Utilisateurs

Table : users

/-----------------------------------------------------------------\
| userid | passwd | uid   | gid   | homedir             | shell   |
|-----------------------------------------------------------------|
| user1  | pass   | 69001 | 69001 | /home/virtual/user1 | /bin/sh |
|-----------------------------------------------------------------|
| user2  | pass   | 69002 | 69001 | /home/virtual/user2 | /bin/sh |
\-----------------------------------------------------------------/

Groupes

Table : groups

/---------------------------------\
| groupname | gid   | members     |
|---------------------------------|
| ftpusers  | 69001 |             |
|---------------------------------|
| groupex   | 69002 | user1,user2 |
\---------------------------------/

Remarque : Les noms des champs et des tables peuvent être personnalisés grâce aux directives SQLUserInfo et SQLGroupInfo.

Liens :

Double authentification

AuthOrder mod_sql.c mod_auth_unix.c

Lien : http://www.proftpd.org/docs/directives/linked/config_ref_AuthOrder.html

Création automatique des homes

CreateHome on

Lien : http://www.proftpd.org/docs/directives/linked/config_ref_CreateHome.html

Chroot des utilisateurs

DefaultRoot ~ !nochroot

Lien : http://www.proftpd.org/docs/directives/linked/config_ref_DefaultRoot.html

Remarque : Les groupes des utilisateurs SQL et POSIX sont distincts : il faut maintenir le groupe à la fois dans le système POSIX et dans une base SQL avec même le nom (et même gid)

Sources d'informations