Télécharger la derniere version stable c'est mieux ! :

cd /opt/SOURCES/
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.bz2
tar -xvjf proftpd-1.3.1.tar.bz2
cd proftpd-1.3.1

Compilation :

mkdir /opt/proftpd
./configure --help (pour voir les options qui vous interesse)
./configure --prefix=/opt/proftpd131 --enable-openssl --enable-ctrls
make
make install

Fichier de configuration .conf à modifier comme ci-dessous :


/opt/proftpd/etc $ cat proftpd.conf
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                      "System-Linux.eu"
ServerType                      standalone
DefaultServer                   on

#Accélerer l'authentification de ProFtpd
IdentLookups off
UseReverseDNS off

# Port 21 is the standard FTP port.
Port                            51       (en l'honneur du pastaga :p)

# Option du mode passif
PassivePorts 7100 7200

# Autoriser l'usage de /etc/ftpusers
UseFtpUsers on

# Rertoire dans lequel arrivent les utilisateurs accepte
DefaultChdir /mnt/ftp

# Rértoire racine, les connectéau ftp ne verrons que lui et son contenu
DefaultRoot /mnt/ftp

# On autorise les reprises des téchargements interrompus :
AllowStoreRestart on

# Les logs des connections et transferts
SystemLog /var/log/proftpd.log
TransferLog /var/log/xferlog

# Nombre maximum de clients ayant le mê login
MaxClientsPerHost 2

# Message d'accueil aprèune connexion résie
AccessGrantMsg "Connexion reussie chapeau l'artiste"

# Pour ne pas donner d'info sur le serveur
DeferWelcome off

# Un utilisateur peut écraser ses propres fichiers
AllowOverwrite off

# from being group and world writable.
Umask                           022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances                    20

# Set the user and group under which the server will run.
User                            proftpu
Group                           proftpg

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
#DefaultRoot ~

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
  DenyAll
</Limit>

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
#<Anonymous ~ftp>
 # User                         ftp
 # Group                                ftp

 # We want clients to be able to login with "anonymous" as well as "ftp"
 # UserAlias                    anonymous ftp

  # Limit the maximum number of anonymous logins
 # MaxClients                   5

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
 # DisplayLogin                 welcome.msg
 # DisplayChdir                 .message

  # Limit WRITE everywhere in the anonymous chroot
 # <Limit WRITE>
  #  DenyAll
 # </Limit>
#</Anonymous>

Créer l'utilisateur et le groupe pour lancer le serveur :

useradd proftpu -d / -s /bin/false 
usermod proftpu -g proftpg

Créer le client utilisateur ftp :

useradd userftp -s /bin/false
passwd userftp

Créer le partage (dossier ftp) :

mkdir /mnt/ftp 
cd /mnt/ftp 
mkdir images videos docs scripts films (etc....)
chmod -R 777 /mnt/ftp

Création du fichier /etc/ftpusers :

C'est le fichier dans lequel sont mentionnés tous les utilisateurs exclus du FTP, pour l'initialisez tapez :

cp /etc/passwd /etc/ftpusers

Le but est simple, il faut qu'apparaissent dans ce fichier tous les utilisateurs de votre linux à l'exception de ceux que vous avez crée précédemment (userftp). N'oubliez pas de rajouter anonymous et faîtes le ménage, pour qu'il ressemble à ça :

# This file describes the names of the users that may
# _*NOT*_ log into the system via the FTP server.
# This usually includes "root", "uucp", "news" and the
# like, because those users have too much power to be
# allowed to do "just" FTP...
#
 root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
ftp
smmsp
mysql
rpc
gdm
pop
nobody
anonymous
kernel 

Création des fichiers de log :

touch /var/log/porftpd.log touch /var/log/xferlog

Lancer votre serveur Proftpd :

cd /opt/proftpd/sbin/
./proftpd

Vérifier que le serveur tourne bien :

ps -ef | grep proftpd
root      5541  1972  0 16:14 pts/1    00:00:00 grep proftpd
proftpu   16174     1  0 11:27 ?        00:00:00 proftpd: (accepting connections)

Les petits plus :

Voici les autres binaires de proftpd il se trouve dans /opt/proftpd/bin :

ftpcount  ftpdctl  ftptop  ftpwho

ftpcount : donne le nombre d'utilisateur online

ftpdctl : controle le bon fonctionnement du socket d'ecoute ftp

ftptop : commande top mais pour proftpd

ftpwho : vous listes les comptes online

il y a aussi ftpshut dans /opt/proftpd/sbin qui sert à arreter le serveur, exemple :

ftpshut now "Coupure pour maintenance et pour xxxxxxx les utilisateurs"

Pour réouvrir le serveur ftp :

ftpshut -R

Voir les modules que support votre proftpd :

cd /opt/proftpd/sbin
./proftpd -vv

Qui vous donne quelque chose comme ça :

 - ProFTPD Version: 1.3.1 (stable)
 -   Scoreboard Version: 01040002
 -   Built: mar déc 23 15:38:02 CET 2008
 -     Module: mod_core.c
 -     Module: mod_xfer.c
 -     Module: mod_auth_unix.c
 -     Module: mod_auth_file/0.8.3
 -     Module: mod_auth.c
 -     Module: mod_ls.c
 -     Module: mod_log.c
 -     Module: mod_site.c
 -     Module: mod_delay/0.6
 -     Module: mod_cap/1.0
 -     Module: mod_ctrls/0.9.4

Je ferai bientôt le même article mais avec support Mysql.