Si un nom d'hote appartient à une interface virtuelle, c'est ce que l'on nomme communément un "hote virtuel". Un démon qui exécute un service sur un hote virtuel (ou sur une interface virtuelle) est appelé "serveur virtuel".
Nous avons déjà donné un exemple de 3 serveurs WWW virtuels précédemment:
www.sharpers.com, www.usurers.com, www.swindlers.com
La configuration d'une grande partie de ces démons http que je connaisse (c.f. l'excellente conception du "Roxen Challenger" ou le largement répandu "Apache") pour utiliser ces serveurs virtuels est facile, et largement documentée. En quelques mots: attachez simplement le port www (num 80) à l'interface réseau virtuelle avec l'adresse ip/nom désiré pour chaque serveur WWW que vous exécutez. Il n'y a aucune astuce.
Lisez le document Linux "Virtual Web mini-HOWTO" si vous désirez plus d'informations sur cette technique.
Dans le cas le plus simple, vous souhaitez recevoir chaque courrier pour tous les hotes virtuels, et pour les domaines concernés:
www.sharpers.com, www.usurers.com, www.swindlers.com,
sharpers.com, usurers.com, swindlers.com
Meme la configuration de "smail" ou de "sendmail" (les démons qui se charge du traffic de courrier sur votre machine Linux) est relativement simple: ajoutez les noms/domaines additionnels dans "/etc/smail/config" (ajoutez 'hostnames=' et 'domains=') respectivement "/etc/mail/sendmail.cw" (un nom de domaine par ligne).
Pour implémenter un "réel" domaine virtuel à l'aide de smail, regarder la FAQ sur smail (smail-FAQ), disponible sur
http://www.sbay.org/smail-faq.html
Le concept de serveur ftp virtuel n'est pas supporté par défaut dans les démons ftp que je connaisse.
Le très largement diffusé "wu-ftpd" dispose d'un patch
réalisé par Brian Grossman brian@SoftHome.Net
pour réaliser
un service FTP distinct du serveur FTP anonyme traditionnel.
Vous trouverez des précisions pour récupérer ce patch dans le
chapitre 3.
Il semble qu'il n'y ait pas d'autres patch disponible pour réaliser cette opération.
L'idée générale du patch multihote de Brian est de faire opérer à wu-ftpd un "chroot()" sur
REPERTOIRE_DE_BASE_DU_COMPTE_FTP/NOM_D_HOTE_DEMANDE/
au lieu de juste faire un chroot() sur
REPERTOIRE_DE_BASE_DU_COMPTE_FTP/
Dans l'exemple présenté précedemment, l'utilisateur qui se connecte sur "ftp.swindlers.com" par un compte ftp anonyme est bloqué dans "/home/ano-ftp/ftp.swindlers.com/" au lieu de "/home/ano-ftp/". Vous pouvez imaginer que la configuration de base est simple et ne diffère que très peu de la configuration d'un serveur anonyme simple.
Gloire à Brian pour cette stratégie de configuration simple et efficace.
Laissez moi m'assurer que vous disposez de cette version spéciale de wu-ftp déjà compilée par vous meme, ou que vous vous etes procuré le binaire, et laissez moi vous renvoyer pour toute question à la fin de ce document.
Je vais vous donner un exemple de la vie courante, et vous expliquer les manipulations que j'ai effectuées pour un de mes clients (je n'ai changé que le nom de ses machines par des noms fictifs...).
(a) Creéz un répertoire "/home/ano-ftp" pour les différents serveurs ftp anonymes.
mkdir /home/ano-ftp && cd /home/ano-ftp
mkdir ftp.sharpers.com ftp.usurers.com ftp.swindlers.com
Vous obtenez alors comme arborescence:
/home/ano-ftp/
|-- ftp.sharpers.com
|-- ftp.swindlers.com
`-- ftp.usurers.com
(b) Copiez les fichiers nécessaires pour un service ftp anonyme depuis le répertoire "/home/ftp" du serveur déjà configuré dans les répertoires nouvellements créés.
cd /home/ano-ftp/ftp.sharpers.com
cp -a /home/ftp/* .
cd ../ftp.swindlers.com
cp -a /home/ftp/* .
cd ../ftp.usurers.com
cp -a /home/ftp/* .
N'oubliez pas d'effacer les fichiers superflus du répertoire "pub/" (ou simplement, ne les copiez pas). Par exemple, le répertoire "/home/ftp" de la distribution Debian ressemble à ceci:
/home/ftp Permissions Propr Groupe Taille
|-- bin d--x--x--x 2 root root
| |-- gzip ---x--x--x 1 root root 45121
| |-- ls ---x--x--x 1 root root 22945
| `-- tar ---x--x--x 1 root root 77769
|
|-- etc d--x--x--x 2 root root
| |-- group -r--r--r-- 1 root root 18
| |-- passwd -r--r--r-- 1 root root 44
| `-- pathmsg -r--r--r-- 1 root root 172
|
|-- lib d--x--x--x 2 root root
| |-- ld-linux.so.1 -r-xr-xr-x 1 root root 21375
| |-- libc.so.5.2.18 -rwxr-xr-x 1 root root 536252
| `-- libc.so.5 -> libc.so.5.2.18
|
|-- pub dr-xr-xr-x 3 root root
| `-- whatever
|
`-- welcome.msg -rw-r--r-- 1 root root 323
(c) Changez le répertoire de base du compte ftp anonyme par "/home/ano-ftp" en éditant le fichier "/etc/passwd".
ftp:*:11:11:Anonymous FTP:/home/ano-ftp:/bin/sh
^^^^^^^^^^^^^
repertoire de base
Ces trois étapes décrivent la configuration minimale, et permettent déjà la séparation des zones ftp pour chacun des 3 hotes virtuels. Mon travail actuel était un peu plus compliqué, puisque j'ai du activer les quotas sur les disques (limitant l'espace disque consommable par utilisateur/groupe) dans chacun des répertoires incoming, donc l'histoire continue:
(d) Activez les zones de téléchargement dans le fichier de configuration de wu-ftp "/etc/ftpd/ftpaccess"
8<----- couper ici 8<-----
upload /home/ano-ftp/www.sharpers.de * no
upload /home/ano-ftp/www.sharpers.de /incoming yes sharpers ftp 0660 nodirs
upload /home/ano-ftp/www.swindlers.de * no
upload /home/ano-ftp/www.swindlers.de /incoming yes swindler ftp 0660 nodirs
upload /home/ano-ftp/www.usurers.de * no
upload /home/ano-ftp/www.usurers.de /incoming yes usurers ftp 0660 nodirs
# | | | | |
# telechargements autorises --+ | | | |
# les fichiers telecharges appartiennent | | | |
# a cet utilisateur ---------+ | | |
# idem pour le groupe ----------------+ | |
# droits d'acces pour les fichiers telecharges ---------------------+ |
# creation de repertoires non autorisee ---------------------------+
8<----- couper ici 8<-----
Maintenant, chaque fichier téléchargé sur ce serveur ftp appartient à un utilisateur séparé, pour qui les quotas peuvent etre activés.
(e) Configurer les quotas sur les disques.
Je vous suggère de lire: "/usr/doc/quotas.txt" et le Linux "Quota mini-HOWTO".
* Ajoutez "usrquota=/etc/quota/ano-ftp.users" dans les options de montage de la partition "/home/an-ftp" qui se trouve dans "/etc/fstab".
* Crééz "/etc/quota/ano-ftp.users" à l'aide de la commande "touch".
* Activez les quotas par la commande "quotaon"
* Fixez les quotas avec "edquota swindlers", etc.
Quotas pour l'utilisateur swindlers:
/dev/sdb8: blocks in use: 0, limits (soft = 0, hard = 10000)
inodes in use: 1, limits (soft = 0, hard = 1000)
L'espace disque correspondant dépend de la taille en block du système de fichier que vous avez créé (le standard est 1 block = 1 kb).
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre