Installer et configurer le serveur ProFTPD (Mandriva 2008.0 à 2008.1)

Introduction

Le File Transfer Protocol est un protocole qui permet à des ordinateur distants d'échanger des fichiers à travers un réseau.
Les applications sont multiples :

  • télécharger des fichiers depuis un serveur
  • transférer vos pages web sur votre serveur web
  • sauvegarde sur un autre ordinateur
  • installation en réseau
  • ...

Si vous n'êtes pas encore familiarisés avec les notations de ce site, dans un popup : conventions d'écriture : Cliquez.

L'installation peut se faire :

La configuration se fait par l'édition du fichier de configuration.

Haut

Un peu de théorie

Ce paragraphe vous sera utile pour savoir comment configurer votre serveur FTP, mais également si votre serveur FTP intègre un pare-feu.

Un serveur FTP demande généralement une identification du client, mais il existe souvent un compte "anonyme", qui donne accès en lecture seule dans la partie publique du serveur.
Pour accéder aux parties privées, les clients doivent avoir un compte et ils accèdent en lecture/écriture aux répertoires qui leur sont dédiés. C'est le cas, par exemple, pour les mises à jour de pages web personnelles.

Le client ouvre une session FTP sur un serveur. Il envoie une requête sur le port 21 du serveur (Mais le serveur peut être configuré pour écouter sur un autre port. Dans ce cas, il faut connaître le numéro de ce port et lui envoyer la requête). La négociation se poursuit sur ce port :

  • le serveur se présente
  • le client se présente par le login de l'utilisateur (ou anonymous)
  • le serveur accepte et demande le mot de passe ou refuse l'accès
  • le client envoie son mot de passe. Pour anonymous, c'est l'adresse de messagerie ou quelque chose qui y ressemble
  • si le mot est correct, la session est ouverte. Le serveur indique quel est le répertoire courant (la racine "/" à ce stade)
  • ensuite, deux cas de figure se présentent :
    • le client demande au serveur d'utiliser FTP en mode actif et propose un port pour recevoir les données.
      Le serveur initie une nouvelle connexion, ce qui signifie que, pour la transmission des données, le serveur joue le rôle de client et le client joue le rôle de serveur.
      Cela aura une conséquence très importante au niveau d'un pare-feu ou d'un routeur NAT.
    • le client demande au serveur d'utiliser FTP en mode passif
      Le serveur accepte et indique quel port il met à disposition.
      Le client initie une nouvelle connexion vers ce port.
      Le routeur NAT n'est plus perturbé puisque la connexion est demandée côté client.
      Mais il faudra tout de même en tenir compte pour le pare-feu du serveur, sil y en a un.
  • ensuite, le dialogue se poursuit, mais il n'a plus d'intérêt pour nous.
Haut

Installation

Méthode graphique

Haut

En ligne de commande

  • Ouvrez une console et passez en mode superutilisateur avec su (le mot de passe root vous sera demandé).
  • Installez le paquetage 'proftpd' :
    urpmi proftpd
    Un message vous indique s'il est déjà installé.
Haut

Configuration

Le fichier de configuration de proftpd s'appelle /etc/proftpd.conf
Vous pouvez utiliser le fichier installé par défaut.
Vous pouvez également utiliser l'un des fichiers ci-dessous :
Dans un popup : configuration pour un serveur de base, sans connexion anonyme :
Cliquez

Vous souhaitez peut-être permettre un accès anonyme, c'est à dire un accès à n'importe quel usager, généralement en lecture seule.
Dans un popup : configuration pour un serveur de base, avec connexion anonyme : Cliquez

Haut

Démarrage

Maintenant que vous avez configuré, vous n'avez plus qu'à activer les changements.
Pour ceci, soit vous attendez le prochain redémarrage de l'ordinateur, soit vous relancez le service proftpd.

  • Dans le Centre de Contrôle, prenez l'onglet Système et l'icôneGérer les services système...
  • Cliquez sur le bouton Démarrer de la ligne proftpd, puis refermez la page des services.

Le serveur FTP est prêt. Ne refermez pas encore le Centre de Contrôle. Vous devez également configurer le pare-feu, s'il est actif.

Haut

Configuration du pare-feu

Si le poste qui est serveur FTP intègre un pare-feu, vous devrez ouvrir les ports utilisés par FTP.

Haut

Utilisateurs virtuels

Vous avez peur-être besoin de définir des permissions pour des utilisateurs autres que ceux qui sont enregistrés sur le serveur FTP : des utilisateurs virtuels.

Définition d'un utilisateur virtuel

Un utilisateur virtuel est, tout simplement, un utilisateur qui n'est pas défini dans le fichier /etc/passwd.

La problématique

Le fichier /etc/passwd associe notamment un nom d'utilisateur, donné par l'administrateur système, à un identifiant d'utilisateur (UID) et un identifiant de groupe (GID).
Le noyau Unix ne traite pas les utilisateurs par leur nom d'utilisateur, mais par leurs UID et GID. Toute application peut y rechercher les identifiants associés à un nom d'utilisateur, lorsqu'elle en a besoin.

Définir des utilisateurs hors de /etc/passwd a comme conséquence que les utilitaires système comme ls et chown ne fonctionnent plus comme prévu.
Lors de la mise en place d'utilisateurs virtuels, la plupart des administrateurs système rencontrent des problèmes de permissions avec, comme conséquences :

  • les utilisateurs virtuels n'arrivent pas à se connecter
  • s'ils y arrivent, il ne peuvent pas recevoir ou envoyer des fichiers
  • ou les fichiers ont de mauvais identifiants

Les problèmes de permissions sont presque toujours provoqués par une non concordance des ID. Le fait est que l'UID et/ou GID de l'utilisateur virtuel ne correspond pas au UID et/ou GID du propriétaire du répertoire qui héberge le fichier.
La solution consiste à changer le propriétaire du répertoire destiné aux utilisateurs virtuels. L'utilitaire chown permet de modifier les ID au lieu de modifier les noms.
L'utilitaire ls peut également être utilisé, mais en lui demandant d'affichier les IDs ls -n

Encore quelques considérations

Quels IDs faut-il utiliser ?

Vous êtes libre d'utiliser les identifiants que vous le souhaitez. Une bonne idée est de prendre, pour vos utilisateurs virtuels, des identifiants autres que ceux de /etc/passwd. Les privilèges des utilisateurs de votre système restent ainsi distincts des privilèges de vos utilisateurs virtuels, puisque les privilèges sont déterminés par les IDs.
Et dans aucun cas, il ne faut utiliser UID=0 ni GID=0.
Si tous les utilisateurs virtuels ont les mêmes privilèges, vous leur attribuerez les mêmes IDs.

Confiner les utilisateurs virtuels

En général, ces utilisateurs virtuels ne doivent pas pouvoir accéder ailleurs que dans la partie d'arborescence qui leur est attribuée.
Assurez-vous que vous avez bien la directive DefaultRoot ~dans le fichier /etc/proftpd.conf.

Où définir les utilisateurs virtuels ?

Vous avez vu qu'ils ne sont pas définis par /etc/passwd.
Il existe plusieurs autres possibilités : AuthUserFiles, répertoire LDAP, bases de données SQL, serveur RADIUS. Par contre, ils ne sont pas définis directement dans le fichier proftpd.conf.
L'un des mécanismes d'authentification simples est donné par les directives AuthUserFile et AuthGroupFile, qui définissent deux fichiers texte simple, dans le même format que /etc/passwd et /etc/group.

Pas de shell pour les utilisateurs virtuels

Ces utilisateurs ne doivent pas pouvoir passer des commandes sur le serveur. Vous allez leur attribuer /bin/false comme interpréteur de commandes.

Un exemple de configuration

Supposons que vous ayez un petit réseau familial, avec un ordinateur faisant office de serveur. C'est également sur cet appareil que se font les sauvegardes des autres ordinateurs de la famille. Les trois utilisateurs sont : Manon, Papet et Ugolin.
Vous ne souhaitez pas attribuer, sur ce serveur, un compte à chaque membre de la famille. Toutefois, chacun doit avoir son espace personnel accessible par ftp et vous décidez de placer ces espaces personnels dans le répertoire /home. Souvenez-vous, /home est en fait une partition indépendante. Vous ne la formaterez pas lorsque, pour une raison ou une autre, vous réinstallerez le serveur. Les sauvegardes seront ainsi préservées.

Fichier de configuration /etc/proftpd.conf

Vous pouvez partir du fichier d'un serveur ftp de base (permettant à chaque utilisateur enregistré sur le serveur d'accéder à son répertoire) ou partir du fichier d'un serveur ftp anonyme (permettant également à n'importe qui d'accéder à un répertoire bien défini, généralement /var/ftp/pub).
Il suffit d'y ajouter les deux directives suivantes :
AuthUserFile /etc/ftpd/passwd
AuthGroupFile /etc/ftpd/group

  • Vous allez ouvrir votre éditeur en mode superutilisateur (voir le paragraphe Configuration).
  • Vous ouvrez le fichier /etc/proftpd.conf
  • Vous y ajoutez les deux lignes, avant la partie Anonymous, si vous en avez une.
  • Vous enregistrez.

Dans un popup, exemple de fichier de configuration d'un seveur de base, avec utilisateurs virtuels Cliquez

Fichier de définition des utilisateurs virtuels et des groupes

Il existe un script perl qui permet de créer les fichiers de définitions.
Comme vous l'avez vu ci-dessus, ceux-ci seront placés dans le répertoire /etc/ftpd. Vous devez le créer

Vous êtes maintenant prêts à créer les utilisateurs virtuels et les groupes.
Dans ce premier exemple, vous définissez trois utilisateurs, Manon, Papet et Ugolin, appartenant chacun à son propre groupe. Vous aurez donc 3 groupes et 3 utilisateurs à créer.
Toujours avec la console, vous utiliserez, pour chacun des utilisateurs virtuels, les deux commandes :
./ftpasswd --passwd --name=xxx --uid=nnnn --file=/etc/ftpd/passwd --home=/home/xxx --shell=/bin/false
./ftpasswd --group --name=xxx --gid=nnn -–file=/etc/ftpd.group --member=xxx
Comme vous pouvez le voir, ici le nom du groupe et son GID sont les mêmes que pout l'utilisateur.

Liste des interpréteurs de commande

Vous avez décidé d'attribuer le shell /bin/false à tous les utilisateurs virtuels.
Il faut éventuellement l'ajouter à la liste des shells.

Avec l'éditeur que vous avez laissé ouvert (en mode administrateur) :

Préparation des répertoires

Il reste à préparer les répertoires d'accueil des utilisateurs virtuels

Dans la console administrateur :

Un autre exemple de configuration

Le serveur ftp comprend un répertoire /home/Sources, commun aux trois utilisateurs, Manon, Papet et Ugolin. Ils s'en servent pour réaliser des travaux communs.

La solution la plus simple, tout en préservant le cantonnement des utilisateurs (virtuels et réels) dans leur espace, consiste à créer un utilisateur virtuel Sources à la place (ou en plus) des trois utilisateurs précédents. Chacun se connectera sous le pseudo de Sources pour accéder au répertoire commun. Petit inconvénient : tous les documents appartiendront à Sources, sans indiquer quel est l'auteur réel.

Une autre solution consiste à créer les trois utilisateurs virtuels comme dans le premier exemple. En plus de cela, il faudra :

Nota : Pour que msec ne modifie pas les permissions du répertoire Sources, celui-ci n'est pas placé directement dans /home, mais dans un répertoire intermediaire ftp (mais cela pourrait être tout autre nom).

Changer le mot de passe

Le script ftpasswd permet également de changer un mot de passe
ftpasswd --passwd --name=Manon --change-password

Haut
 

Les pages relatives aux tutoriels :

Installation : avant, pendant, après Installation, pas à pas, de 2008.0 Installation, depuis internet Installation en réseau
Comment MDV sélectionne les paquetages Créer sa liste de paquetages
Configuration du système Configuration d'un utilisateur KDE Serveur de fichiers avec ProFTPD Partage de fichiers avec NFS
Réveiller un ordinateur à distance Commander un ordinateur à distance avec ssh
Le son et la gestion du son La video et la gestion des images Découvrir la puissance de Gstreamer
Faire des sauvegardes générales Nettoyer le répertoire /home Changer de client de messagerie Synchroniser fichiers et répertoires
Créer sa distribution personnelle Autopsie d'une distribution Mandriva

Les différentes rubriques :

Accueil Ordinateur Mandriva Tutoriels Initiation à la programmation Maison bioclimatique
On se lasse de tout, sauf de comprendre.
Attribué à Virgile.