Serveurs Proftpd
Écrit par VieuxProf   
01-01-1999

Proftpd est une alternative souple et fiable pour mettre en place un serveur de fichiers FTP.
Choix des arborescences et politique des accès :

  • Par défaut, les utilisateurs locaux ont accès à leur /home via FTP mais ils ne sont pas chrooted. Il est donc préférable de créer une arborescence particulière pour FTP. Les choix retenus dans cet exemple sont décrits ci-dessous.
  • On utilise 3 classes d'utilisateurs FTP : anonymous/ftp, invités FTP (type ftpbienvenue) et utilisateurs UNIX (type markus).
  • On crée l'arborescence suivante :
    • /var/ftp - racine du serveur FTP, accessible en lecture aux invités FTP et aux utilisateurs UNIX
    • /var/ftp/public - répertoire de download accessible en lecture à tous, y compris anonymous
    • /var/ftp/upload - racine du répertoire d'upload, accessible en lecture aux invités FTP et aux utilisateurs UNIX spécifiquement autorisés
    • /var/ftp/upload/ftpbienvenue - répertoire d'upload accessible en lecture/écriture aux invités FTP et aux utilisateurs UNIX spécifiquement autorisés.


  1. Vérifier si Wu-ftpd est installé et si c'est le cas, le désactiver
  2. Installer le RPM ou le TGZ
    # ./configure; make; make install
  3. S'assurer que /etc/ftponly figure dans /etc/shells (sinon, le rajouter)
    # cat /etc/shells | grep ftponly
  4. Créer un utilisateur système sans mot de passe ni shell
    Par défaut, Proftpd est lancé par l'utilisateur root. Il est préférable de l'attribuer à l'utilisateur nobody:nobody ayant pour shell /etc/ftponly
    # cat /etc/passwd |grep nobody; cat /etc/group | grep nobody # L'utilisateur et le groupe nobody existent-t'ils ?
    # useradd -s /etc/ftponly nobody # ...Sinon les créer
    # usermod -d / -c "FTP système" nobody # Changer le /home de nobody
    # rm -Rf /home/nobody # supprimer le /home créé par défaut
    # cat /etc/passwd |grep nobody; cat /etc/group | grep nobody # Vérifier
    nobody:x:501:501::/:/etc/ftponly
    nobody:x:501:
  5. Créer un utilisateur 'ftp' sans mot de passe ni shell pour les connexions anonymes
    # cat /etc/passwd |grep ftp; cat /etc/group |grep ftp # L'utilisateur et le groupe ftp existent-t'ils ?
    # useradd -s /etc/ftponly ftp # ...Sinon les créer
    # usermod -d /var/ftp/public -c "FTP anonymous" ftp # Changer le /home de ftp
    # rm -Rf /home/ftp # supprimer le /home créé par défaut
    # cat /etc/passwd |grep ftp; cat /etc/group | grep ftp # Vérifier
    ftp:x:503:503::/var/ftp/public:/etc/ftponly
    ftp:x:503:
  6. Créer l'arborescence FTP et octroyer les permissions UNIX (permissions FTP déterminées par les permissions locales)
    # mkdir /var/ftp /var/ftp/public /var/ftp/upload
    # chown root.root /var/ftp; chmod -R 755 /var/ftp # racine du serveur
    # chown root.root /var/ftp/public; chmod 755 /var/ftp/public # lecture seule pour tout le monde
    # groupadd ftpusers # création d'un groupe ftpusers pour les invités et utilisateurs autorisés
    # chown root.ftpusers /var/ftp/upload; chmod 750 /var/ftp/upload # lecture seule pour les ftpusers
    # ls -lR /var/ftp # vérification de l'arborescence
  7. Paramétrer proftpd.conf (voir section Exemples)
    Les droits FTP sont déterminés au final par les permissions locales UNIX, mais des restrictions supplémentaires peuvent être ajoutées dans proftpd.conf. De plus, c'est dans ce fichier qu'on définit les accès anonymes.
  8. Paramétrer le démarrage automatique de Proftpd au démarrage du système
    # echo "/usr/local/sbin/proftpd" >> /etc/rc.d/rc.local

Création des invités FTP et de leur arborescence :
  1. Créer un utilisateur sans shell de type ftpbienvenue
    # useradd -s /etc/ftponly ftpbienvenue; passwd ftpbienvenue
  2. Modifier son home directory et l'intégrer au groupe ftpusers
    # usermod -G ftpusers -d /var/ftp -c "FTP activé" ftpbienvenue
  3. Supprimer le home directory créé par défaut avec l'utilisateur
    # rm -Rf /home/ftpbienvenue
  4. Créer un répertoire d'upload pour ftpbienvenue et octroyer les droits
    # mkdir /var/ftp/upload/ftpbienvenue
    # chown ftpbienvenue.ftpusers /var/ftp/upload/ftpbienvenue; chmod 700 /var/ftp/upload/ftpbienvenue
  5. Vérifier et tester
    # cat /etc/passwd |grep ftpbienvenue; cat /etc/group | grep ftpusers
    ftpbienvenue:x:502:502::/var/ftp/:/etc/ftponly
    ftpusers:x:502:ftpbienvenue
    # ftp monhote

/usr/local/etc/proftpd.conf unique fichier de configuration du démon proftpd
/var/log/messages, /var/log/xferlog, /var/log/ftp.log fichiers de logs de proftpd
/var/log/wtmp, /var/run/utmp enregistrement des connexions au service FTP
/etc/ftponly pseudo-shell pour utilisateurs FTP


/usr/local/sbin/proftpd démarrage du serveur
killall -HUP proftpd redémarrage du serveur
kill -15 proftpd arrêt du serveur en tuant son processus
/usr/local/sbin/ftpshut now arrêt du serveur sans tuer son processus (/etc/shutmsg)
/usr/local/bin/ftpcount, /usr/local/bin/ftpwho état courant des connexions
ps aux | grep proftpd proftpd est-il actif?
ftp monserveur ftp client interactif


- On peut également instaurer des quotas pour les serveurs communautaires et gérer des hôtes virtuels.
- Proftpd peut fonctionner en standalone ou avec inetd.
http://www.proftpd.org/
man proftpd








Dernière mise à jour : ( 03-02-2008 )