Allez, on entre directement dans le vif du sujet, on installe via apt:
1 | # apt-get install proftpd proftpd-doc |
Notez que j’ai pris la documentation.. qui peut s’averrer très très utile ;)
Un seul fichier de configuration « /etc/proftpd.conf« , c’est dans ce fichier ue vous allez tout définir (ou presque, puisque les utilisateurs ne sont géré ici)
les Utilisateurs:
ce sont ceux de votre système (avec un Uid).. Vous pouvez vous connecter avec les login de chaque utilisateurs sur votre FTP.
Les utilisateurs auront un accès en lecture TOTAL, et en écriture sur leur répertoire /home/ respectifs. N’hésitez donc pas à modifier les permissions d’accès de chaque utilisateurs.
Création du groupe ftpusers :
1 | # addgroup ftpusers |
Edition du fichier de configuration /etc/proftpd.conf :
(voici à quoi ressemble le mien. Jetez un oeil aux 4 lignes sous DefaultRoot ~ ftpusers)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | ServerName "Mon ftp" ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on DenyFilter *.*/ Port 21 # Nombre de connexions concurrentes maximum MaxInstances 30 AllowOverwrite on # Autorise les clients à reprendre les Uploads vers vous. # A déactiver si on n'autorise pas les Uploads. AllowStoreRestart on # Autorise la reprise des téléchargements. AllowRetrieveRestart on # Active un arrangement des lignes pour plus de compatibilité. MultilineRFC2228 on # Evite le blocage de ProFTPd pendant le temps de réponse de résolution DNS. UseReverseDNS off # Option de logging pour cette zone vers ce fichier. TransferLog /var/log/proftpd/proftpd.log # Formats des logs. LogFormat default "%h %l %u %t \"%r\" %s %b" LogFormat auth "%v %P %h %t \"%r\" %s" LogFormat write "%h %l %u %t \"%r\" %s %b" # Permet de chrooter les utilisateurs FTP locaux dans leur home directory. DefaultRoot ~ AuthUserFile /etc/ftpd.passwd # chroot des users ftp et interdiction d'accès aux autres groupes DefaultRoot ~ ftpusers <Limit ALL> DenyGroup !ftpusers </Limit> # le global est défini pour TOUS les utilisateurs <global> # défini le umask pour le user et son groupe (fonctionne à l'envers d'un chmod. 022 = 744) Umask 022 022 # Enregistre les accès sur les fichiers et répertoires. ExtendedLog /var/log/proftpd/access.log WRITE,READ write # Enregistre tout les logins. ExtendedLog /var/log/proftpd/auth.log AUTH auth # Force l'option de directory listings (NLST, LIST et STAT) à -l ListOptions "-l" # Interdit l'overwrite pour le répertoire /home/ftp # ainsi que la suppression et l'écriture <Directory /home/ftp/ > AllowOverwrite off <Limit DELE WRITE > DenyAll </Limit> </Directory> # Autorise toutes les actions lecture/ecriture pour le répertoire /home/ftp/upload <Directory /home/ftp/upload > AllowOverwrite on <Limit READ WRITE DELE DIRS> AllowAll </Limit> </Directory> # Permet de ne pas donner d'informations sur le serveur. DeferWelcome off # On indique au serveur FTP d'utiliser ou non le fichier /etc/ftpusers pour savoir qui a le droit de se connecter. # Par défaut ce fichier est utilisé par ProFTPd. UseFtpUsers on # Le premier message qui sera affiché quand quelqu'un se connectera ServerIdent on "Server FTP ready" # Message d'accueil AccessGrantMsg "Bienvenue %u sur ftp machin" # Autorise le téléchargement ou upload distant directement depuis un autre serveur FTP sans passer par le PC de l'user. AllowForeignAddress on # Permet de déconnecter le client au bout de "x" secondes, S'il n'y a aucune activité de son coté. TimeoutIdle 600 # S'il n'y a aucune activité entre la saisie du login et du passwd. TimeoutLogin 300 # S'il n'opère aucun transfert. TimeoutNoTransfer 300 # S'il a stoppé le transfert. TimeoutStalled 3600 # Autorise seulement les noms de fichiers normaux (caractères alphanumérique) et non des codes shell. PathAllowFilter "[a-zA-Z0-9]" # Refuse l'upload de fichiers .ftpaccess ou .htaccess PathDenyFilter "(.ftp)|(.hta)[a-z]+$" # N'autorise pas de passer des printf-Formats. AllowFilter "^[a-zA-Z0-9@~ /,_.-]*$" DenyFilter "%" # Cache les liens symboliques. ShowSymlinks off </global> |
Mettez le où vous voulez. Personnellement, je colle ça dans /home/ftp. [1]
Souvenez vous, /home/ftp est en lecture seule et /home/ftp/upload doit être en lecture/ecriture. Même si votre répertoire /home/ftp a été créé, il vous faut ajouter le répertoire /home/ftp/upload
1 2 3 | # cd /home # mkdir /home/ftp # mkdir /home/ftp/upload |
Le répertoire doit appartenir au groupe ftpusers et n’être accessible qu’en lecture pour les utilisateurs (nous créerons ultérieurement un répertoire accessible en lecture/ecriture)
1 2 3 | # chgrp ftpusers /home/ftp # chmod 766 /home/ftp # chown -R ftp:ftpusers /home/ftp |
Les utilisateurs ne doivent pouvoir accéder qu’en ftp. Nous allons leur assigner le shell à /bin/false. Assurez vous préalablement que cette option est possible :
1 | # nano /etc/shells |
- Vérifiez dans le fichier que vous venez d’ouvrir que la ligne /bin/false est présente. Si ce n’est pas le cas, ajoutez la en fin de fichier et enregistrez votre modification.
Maintenant, pour éviter de créer un compte à chaque nouvel utilisateur, vous allez créer des utilisateurs virtuels qui accèderont au ftp via votre user ftp. (Pour l’exemple, vous allez créer l’utilisateur toto)
- Déterminez en premier lieu le uid du compte ftp et le gid du groupe ftpusers en vérifiant respectivement les fichiers /etc/passwd et /etc/group
1 | # grep ftp /etc/passwd |
vous fournit l’UID 108
1 | ftp:x:108:65534::/home/ftp:/bin/false |
1 | # grep ftpusers /etc/group |
vous donne en résultat:
1 | ftpusers:x:1001: |
qui correspond au GID 1001
1 | # cd /etc $ sudo ftpasswd --passwd --name=toto --uid=108 --gid=1001 --home=/home/ftp --shell=/bin/false |
Vous aurez ici à fournir le mot de passe de votre nouvel utilisateur. (ftpasswd crée un fichier /etc/ftpd.passwd gérant vos utilisateurs virtuels équivalent à /etc/passwd)
Bravo ! Votre utilisateur est créé…
(Si vous avez suivi ce tuto à la lettre, vous avez un ftp quasi fonctionnel)
1 | # /etc/init.d/proftpd restart |
C’est tout. Enjoy



Salut,
Proftpd est souvent très lent à répondre aux demandes de connection. Pour améliorer ça, il suffit de rajouter :
UseReverseDNS off
++ ;)
merci pour l’astuce ;)