Accueil  Forums
Softs

Tech
Améliorer le ftp de Jaguarpar le mardi 3 septembre 2002

Mac OS X propose en standard un serveur FTP que l’on peut activer dans les options de partage des préférences systeme. Ceci peut s’avérer pratique si on désire copier des fichiers par internet, ou à partir d’une plateforme ne supportant pas AppleShare. Cependant, il faut disposer d’un compte sur la machine et ainsi accéder directement aux fichiers de ce compte.

Il n’est donc pas possible à la base de se connecter en anonyme et accéder aux dossiers "Public" des utilisateurs, comme le permet le partage AppleShare. Cet article vous montre donc comment installer un autre serveur FTP et le configurer pour prendre en charge cette fonctionnalité. Je ne me suis pas basé sur le serveur FTP natif de Mac OS X (lukemftpd 1.1) car il n’est pas très répendu, et pure-ftpd dispose de fonctionnalités interessantes.

ATTENTION ! Cette méthode autorise tout le monde à lire votre répertoire de base. Les dossiers par défaut créés par le système ne sont pas accessibles, mais les dossiers que vous créez le sont ! N’ouvrez le serveur FTP que quand vous en avez besoin (dans les préférences Partage du systeme)



Les fichiers de cet article
Package pour MacOS X Jaguar (v3)
Package tout prêt à installer et sauter toutes les étapes ci-dessous !

Cet article a été mis à jour et explique à présent comment créer le user ftp ;-) désolé pour la boulette

Prérequis

Pour suivre cette méthode, vous devrez disposer des developer tools d’apple. Ces outils sont librement téléchargeables sur le site Développeurs Apple après vous être inscrit.

Installation

Tout d’abord, récupérez les sources de la dernière version de pure-ftpd sur sourceforge : http://sourceforge.net/project/showfiles.php ?group_id=18317 et décompressez les. Nous allons supposer tout au long de l’article que les sources se trouvent dans votre répertoire de base, sous le dossier /src et que l’installation se fera dans le répertoire /usr/local/pure-ftpd/


$ tar -xzf pure-ftpd-1.0.12.tar.gz
$ cd pure-ftpd-1.0.12/

Voyons un peu quelles fonctionnalités sont disponibles à la compilation :


$ ./configure --help
[...]
 --with-dmalloc          use dmalloc, as in
                         http://www.dmalloc.com/dmalloc.tar.gz
 --without-standalone    Don't compile the standalone server code
 --without-inetd         Don't support super-servers (like inetd)
 --without-capabilities  Don't use Linux capabilities (default=detect)
 --without-shadow        Don't use shadow passwords (default=detect)
 --without-usernames     Use only numerical UIDs/GIDs
 --without-iplogging     Never log remote IP addresses (privacy)
 --without-humor         Disable humor (enabled by default)
 --without-longoptions   Don't support long options (like --help)
 --without-ascii         Don't support 7-bits (ASCII) transfers
 --without-banner        Don't display any initial banner
 --without-globbing      Don't include globbing code
 --without-nonalnum      Only allow basic alphanumeric characters in file
                         names
 --without-sendfile      Don't use zero-copy optimizations (for network FS)
 --with-brokenrealpath   If your libc has a broken realpath() call
 --with-probe-random-dev If you want to probe for /dev/*random at run-time
 --with-minimal          Build only a small minimal server
 --with-paranoidmsg      Use paranoid, but not admin-friendly messages
 --with-sysquotas        Use system (not virtual) quotas
 --with-altlog           Support alternative log format (Apache-like)
 --with-puredb           Support virtual (FTP-only) users
 --with-extauth          Support external authentication modules
 --with-pam              Enable PAM support (default=disabled)
 --with-cookie           Support 'fortune' cookies (-F option)
 --with-throttling       Support bandwidth throttling (disabled by default)
 --with-ratios           Support for upload/download ratios
 --with-quotas           Support .ftpquota files
 --with-ftpwho           Support for pure-ftpwho
 --with-largefile        Support for files > 2 Gb (may be slower)
 --with-welcomemsg       Support welcome.msg backward compatibility
                         (deprecated)
 --with-uploadscript     Allow running an external script after an upload
 --with-virtualhosts     Handle virtual servers on different IP addresses
 --with-virtualchroot    Enable the ability to follow symlinks outside a
                         chroot jail
 --with-diraliases       Enable directory aliases
 --with-nonroot          Non-root FTP (experimental)
 --with-peruserlimits    Support per-user concurrency limits (experimental)
 --with-debug            For maintainers only - please do not use
 --with-everything       Build a big server with almost everything
 --with-language=        < english | german | romanian | french |
                         french-funny | polish | spanish | danish | dutch |
                         italian | brazilian-portuguese | slovak | korean |
                         swedish | norwegian | russian | traditional-chinese
                         | simplified-chinese >
 --with-ldap             Users database is an LDAP directory (see doc)
 --with-mysql            Users database is a MySQL database (see doc)
 --with-pgsql            Users database is a PostgreSQL database (see doc)
[...]

Plutot pas mal, voici ce que je vous propose d’activer, cette ligne va permettre de préparer la compilation avec les options suivantes :


./configure --without-standalone --with-puredb --with-throttling --with-ftpwho --with-language=french --prefix=/usr/local/pure-ftpd

- —without-standalone : Nous n’avons pas besoin du mode standalone, notre serveur ftp tournera exclusivement via xinetd, le nouveau super-démon qui remplace avantageusement inetd sous Jaguar (Mac OS 10.2).
- —with-puredb : Grâce à cette option, nous pourrions éventuellement définir des comptes qui ne sont pas des comptes système (cette documentation n’en parlera pas plus).
- —with-throttling : L’une des options les plus interessante, nous allons pouvoir limiter la bande passante disponible afin d’en garder un peu pour notre usage !
- —with-ftpwho : Cette option installe un outil supplémentaire pour visualiser les utilisateurs connectés.
- —with-language=french : Sans commentaires !
- —prefix=/usr/local/pure-ftpd : Nous précisons à quel endroit installer le serveur

Et maintenant, la compilation :


$ make

Si tout se passe bien, vous pouvez passer à l’installation dans les répertoires finaux, un mot de passe administrateur de votre système sera demandé :


$ sudo make install

Et voilà ! on peut passer à la suite !

Configuration

Nous avons décidé de configurer pure-ftpd pour qu’il tourne via xinetd, il faut donc configurer ce dernier pour qu’il lance pure-ftpd quand une connexion est demandée, au lieu de lancer le serveur ftp par défaut. Ceci requiert l’édition d’un fichier système, si vous n’êtes pas sûr de vous, vous risquez au pire de rendre inaccessible le serveur ftp, mais rien d’irréversible.

Nous allons donc éditer le fichier /etc/xinetd.d/ftp a l’aide de vi, si vous n’êtes pas familier avec vi, vous pouvez utiliser bbedit par exemple, mais vous devrez avoir installé les outils shell, sinon, un rapide résumé des commandes vi :

- [esc] : revient en mode commande (mode à l’ouverture)
- i : passe en mode insertion
- dd : supprime une ligne
- x : supprime un caractère
- u : annule les dernières opérations
- :x : sauvegarde et quitte l’éditeur

C’est parti :


sudo vi /etc/xinetd.d/ftp

Voilà à quoi doit ressembler le fihcier après modification :


service ftp
{
       disable = no
       socket_type     = stream
       wait            = no
       user            = root
       server          = /usr/local/pure-ftpd/sbin/pure-ftpd
       server_args     = -A -u 100
       groups          = yes
}

Pour la limitation de bande passante, vous pouvez en plus ajouter à server_args : -t  : ou -T  :

- -t concerne les utilisateurs anonyme
- -T concerne tous les utilisateurs Les valeurs s’expriment en Kb/s, si vous ne mettez rien en montant ou descendant, il n’y a pas de limite dans ce sens, et si vous mettez juste un chiffre, cette valeur est considérée symétrique (la limitation est faite en traffic montant et descendant.

Vous pouvez maintenant valider votre configuration en forçant xinetd à relire sa configuration :


$ sudo killall -USR2 xinetd

Il reste une dernière opération à faire : Créer l’utilisateur "ftp" du système. En effet, par défaut et pour une raison inconnue, celui-ci n’existe pas !

Armez vous de l’application NetInfo Manager dans le dossier Utilitaires de Applications.

(PNG)
(PNG)

Cliquez sur l’icone en bas à droite pour saisir votre mot de passe d’administrateur.

(PNG)

Naviguez jusqu’à /users et sélectionnez l’utilisateur "games". Cliquez sur l’icone Dupliquer en haut à gauche et confirmez le dialogue.

Modifiez ensuite les valeurs de ce nouvel utilisateur pour refléter ce tableau :

(PNG)

Voilà, c’est prêt, vous pouvez tout sauvegarder en quittant NetInfo et vous connecter en anonyme sur votre système, la liste des dossiers des utilisateurs vous sera proposée. Vous pouvez bien sûr aussi vous connecter sous l’identité d’un utilisateur régulier.

En anonyme, pour chaque utilisateur, vous avez accès en lecture seule à "Public" et pour pouvez télécharger des documents dans "Drop Box"



Pour toutes informations concernant ce site, vous pouvez contacter le webmaster