ubuntu server guide
Post on 19-Jan-2016
26 Views
Preview:
TRANSCRIPT
Ubuntu Server Guide
Ubuntu Documentation Project <ubuntu-doc@lists.ubuntu.com>
Ubuntu Server Guidepar Ubuntu Documentation Project <ubuntu-doc@lists.ubuntu.com>
Copyright © 2004, 2005, 2006 Canonical Ltd. and members of the Ubuntu Documentation Project
Résumé
Une introduction à l'installation et à la configuration d'applications pour serveurs sur Ubuntu.
Remerciements et licence
Les auteurs suivants de l'équipe de documentation d'Ubuntu tiennent ce document à jour :
• Bhuvaneswaran Arumugam
Le Server Guide Ubuntu est aussi basé sur les contributions de :
• Robert Stoffers
• Brian Shumate
• Rocco Stanzione
Ce document est mis à disposition sous une double license, la licence GNU Free Documentation (GFDL) et la licence Creative Commons
ShareAlike 2.0 (CC-BY-SA).
Vous êtes libre de modifier, d'étendre et d'améliorer le code source de la documentation d'Ubuntu sous les conditions de ces licences. Tous
travaux dérivés de cette documentation doivent être publiés sous au moins une de ces deux licences.
Cette documentation est distribuée dans l'espoir qu'elle sera utile, mais SANS AUCUNE GARANTIE; sans même la garantie implicite de
QUALITÉ MARCHANDE ou de CONVENANCE POUR UN BUT PARTICULIER COMME LE DÉCRIT LA DÉCLARATION DE
RESPONSABILITÉ.
Des copies de ces licences sont disponibles dans les sections annexes de ce livre. Des versions en ligne peuvent être trouvées aux adresses
suivantes :
• GNU Free Documentation License [http://www.gnu.org/copyleft/fdl.html]
• Attribution-ShareAlike 2.0 [http://creativecommons.org/licenses/by-sa/2.0/]
Disclaimer
Every effort has been made to ensure that the information compiled in this publication is accurate and correct. However, this does not
guarantee complete accuracy. Neither Canonical Ltd., the authors, nor translators shall be held liable for possible errors or the consequences
thereof.
Some of the software and hardware descriptions cited in this publication may be registered trademarks and may thus fall under copyright
restrictions and trade protection laws. In no way do the authors make claim to any such names.
THIS DOCUMENTATION IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
iii
Table des matières
About This Guide .............................................................................................................. vi
1. Conventions ........................................................................................................... vii
2. Contributing and Feedback ..................................................................................... viii
1. Introduction ................................................................................................................... 9
2. Installation ..................................................................................................................... 10
1. Préparer l'installation .............................................................................................. 11
2. Installation à partir du CD ...................................................................................... 13
3. Gestion des paquets ........................................................................................................ 14
1. Introduction ........................................................................................................... 15
2. Apt-Get ................................................................................................................. 16
3. Aptitude ................................................................................................................. 18
4. Configuration ......................................................................................................... 20
5. Dépôts supplémentaires .......................................................................................... 21
4. Réseau ........................................................................................................................... 22
1. Configuration du réseau .......................................................................................... 23
2. TCP/IP .................................................................................................................. 26
3. Configuration du pare-feu ....................................................................................... 30
4. Serveur OpenSSH .................................................................................................. 33
5. Serveur FTP ........................................................................................................... 36
6. Network File System (NFS) .................................................................................... 38
7. Dynamic Host Configuration Protocol (DHCP) ........................................................ 40
8. Service de nom de domaine (DNS) ......................................................................... 43
9. CUPS - Serveur d'impression .................................................................................. 45
10. HTTPD - serveur Internet Apache2 ....................................................................... 48
11. PHP5 - Langage de script ..................................................................................... 58
12. Squid - Serveur proxy .......................................................................................... 60
13. Système de contrôle de version ............................................................................. 62
14. Bases de données ................................................................................................. 69
15. Services de Courriel ............................................................................................. 72
16. Synchronisation temporelle avec NTP .................................................................... 84
5. Réseaux Windows .......................................................................................................... 86
1. Introduction ........................................................................................................... 87
2. Installer SAMBA ................................................................................................... 88
3. Configurer SAMBA ............................................................................................... 89
A. Creative Commons by Attribution-ShareAlike 2.0 ........................................................... 95
B. GNU Free Documentation License ................................................................................. 100
1. PREAMBLE .......................................................................................................... 101
2. APPLICABILITY AND DEFINITIONS .................................................................. 102
3. VERBATIM COPYING ......................................................................................... 104
4. COPYING IN QUANTITY .................................................................................... 105
Ubuntu Server Guide
iv
5. MODIFICATIONS ................................................................................................. 106
6. COMBINING DOCUMENTS ................................................................................. 108
7. COLLECTIONS OF DOCUMENTS ....................................................................... 109
8. AGGREGATION WITH INDEPENDENT WORKS ................................................ 110
9. TRANSLATION .................................................................................................... 111
10. TERMINATION .................................................................................................. 112
11. FUTURE REVISIONS OF THIS LICENSE .......................................................... 113
12. ADDENDUM: How to use this License for your documents ................................... 114
v
Liste des tableaux
2.1. Exigences minimales recommandées ............................................................................. 11
4.1. Modes d'accès ............................................................................................................. 63
vi
About This Guide
About This Guide
vii
1. Conventions
The following notes will be used throughout the book:
A note presents interesting, sometimes technical, pieces of information related to the
surrounding discussion.
A tip offers advice or an easier way of doing something.
A caution alerts the reader to potential problems and helps avoid them.
A warning advises the reader of a hazard that may arise in a given scenario.
Cross-reference conventions for print will be displayed as follows:
• Links to other documents or websites will look like this [http://www.ubuntu.com].
PDF, HTML, and XHTML versions of this document will use hyperlinks to handle
cross-referencing.
Type conventions will be displayed as follows:
• File names or paths to directories will be shown in monospace.
• Commands that you type at a Terminal command prompt will be shown as:
command to type
• Options that you click, select, or choose in a user interface will look like this.
Menu selections, mouse actions, and keyboard short-cuts:
• A sequence of menu selections will be displayed as follows: File → Open
• Mouse actions shall assume a right-handed mouse configuration. The terms « click » and
« double-click » refer to using the left mouse button. The term « right-click » refers to using the
right mouse button. The term « middle-click » refers to using the middle mouse button, pressing
down on the scroll wheel, or pressing both the left and right buttons simultaneously, based on the
design of your mouse.
• Keyboard shortcut combinations will be displayed as follows: Ctrl-N .Where the conventions for
« Control », « Shift, » and « Alternate » keys will be Ctrl, Shift, and Alt, respectively, and shall
mean the first key is to be held down while pressing the second key.
About This Guide
viii
2. Contributing and Feedback
This book is developed by the Ubuntu Documentation Team
[https://wiki.ubuntu.com/DocumentationTeam]. You can contribute to this document by sending
ideas or comments to the Ubuntu Documentation Team mailing list. Information about the
team, its mailing lists, projects, etc. can be found on the Ubuntu Documentation Team Website
[https://wiki.ubuntu.com/DocumentationTeam].
If you see a problem with this document, or would like to make a suggestion, you can simply file a
bug report at the Ubuntu Bugtracker [https://launchpad.net/products/ubuntu-doc/+bugs]. Your help is
vital to the success of our documentation!
Many thanks,
-Your Ubuntu Documentation Team
9
Chapitre 1. IntroductionBienvenue dans le Server Guide Ubuntu !
Le Server Guide Ubuntu contient des informations sur l'installation et la configuration de diverses
applications serveur sur votre système Ubuntu, afin qu'il corresponde à vos besoins. C'est un guide
pas-à-pas pour configurer et personnaliser votre système. Ce manuel passe en revue de nombreux
sujets intermédiaires exposés ci-dessous :
• Configuration du réseau
• Configuration Apache2
• Bases de données
• Réseaux Windows
Ce manuel est divisé en catégories principales que voici :
• Installation
• Gestion des paquets
• Réseau
• Réseaux Windows
Ce guide présume que vous avez une connaisance suffisante de votre système Ubuntu. Si vous avez
besoin d'une aide plus détaillée pour l'installation, référez-vous au guide d'installation d'Ubuntu.
Des versions HTML et PDF de ce manuel sont disponibles en ligne sur le site internet de
documentation Ubuntu [http://help.ubuntu.com].
Vous pouvez acheter ce guide sous forme de livre depuis la boutique de Lulu
[http://www.lulu.com/ubuntu-doc]. Vous ne paierez que le prix de l'impression et de l'envoi.
10
Chapitre 2. InstallationCe chapitre fournit un rapide vue d'ensemble de l'installation de l'Ubuntu 6.10 Server Edition. Pour
des instructions plus détaillées, merci de vous reporter au guide d'installation d'Ubuntu.
Installation
11
1. Préparer l'installation
Cette section détaille différents aspects à considérer avant de commencer l'installation.
1.1. Exigences du système
L'Ubuntu 6.10 Server Edition supporte trois (3) architectures majeures : Intel x86, AMD64 et
PowerPC. Le tableau qui suit décrit les configurations matérielles recommandées. Selon vos besoins,
il est possible que vous puissiez vous satisfaire de moins. Cependant, la plupart des utilisateurs
risquent d'être insatisfaits s'ils ne tiennent pas compte de ces suggestions.
Tableau 2.1. Exigences minimales recommandées
Type d'installation RAM Capacité Disque dur
Serveur 64 Megaoctects 500 Megaoctects
Le profil par défaut de Ubuntu 6.10 Edition Serveur apparaît ci-dessous. Encore une fois, la taille
de l'intallation dépend essentiellement des services installés pendant la configuration. Les services
sélectionnés par défaut conviennent à la plupart des administrateurs dans le cadre d'un usage courant
du serveur.
Serveur
Ce profil correspond à un petit serveur, constituant une base commune pour toutes sortes de
serveurs d'applications. C'est une configuration minimale, sur laquelle il est prévu d'ajouter des
services supplémentaires comme le service de fichiers ou d'impression, l'hébergement Web,
l'hébergement de messagerie, etc. Pour ces services, 500 Mo d'espace disque devraient suffire,
mais il s'agit de prévoir l'ajout d'espace supplémentaire selon les services que vous souhaitez
ajouter au serveur.
Souvenez-vous que ces quantités n'incluent pas tous les autres types objets qu'on trouve généralement,
comme les fichiers personnels des utilisateurs, les courriels, les journaux et les données. Il convient
toujours d'être généreux quand on prévoit l'espace destiné à ses propres fichiers et données.
1.2. Sauvegarde
• Avant de commencer, assurez-vous de sauvegarder chaque fichier présent sur votre système. Si
c'est la première fois que vous installez un autre système d'exploitation, autre que celui préinstallé,
il est vraisemblable que vous ayez à repartitioner votre disque, pour faire de la place pour Ubuntu.
Chaque fois, que vous partitionez votre disque, vous devez être prêt à perdre toutes les données
qu'il contient, suite à une erreur de votre part, ou un problème autre, comme une coupure de
l'alimentation. Les programmes utilisés lors de l'installation sont très fiables et sont utilisés depuis
des années, mais ils peuvent réaliser des actions destructives, et une erreur dans leur emploi, peut
provoquer la perte de données importantes.
Si vous décidez de créer un système multi-boot, assurez-vous de disposer du support de distribution
de tous les autres systèmes d'exploitation déjà présents. En particulier si vous re-partitionnez le
Installation
12
disque dur de démarrage, car vous pourriez avoir à réinstaller le fichier de démarrage de votre
système d'exploitation, voire dans de nombreux cas, le système d'exploitation tout entier et tous les
fichiers situés sur les partitions concernées.
Installation
13
2. Installation à partir du CD
Insérez votre CD d'installation dans le lecteur puis redémarrez l'ordinateur. La procédure d'installation
démarre immédiatement après l'insertion du CD. Après l'initialisation, votre premier écran apparaîtra.
Arrivé à cette étape, prenez connaissance du texte présent à l'écran. Vous voudrez peut-être consulter
l'écran d'aide fourni par le système d'installation. Pour cela, appuyez sur la touche F1.
Pour effectuer une installation serveur par défaut, sélectionnez l'option « Installer sur le disque »
puis pressez la touche Entrée. La procédure d'installation sera alors lancée. Suivez simplement les
instructions présentes à l'écran et votre système Ubuntu sera installé.
Sinon, pour installer un serveur LAMP (Linux, Apache, MySQL, PHP/Perl/Python), sélectionnez
« installer un serveur LAMP », et suivez les instructions.
14
Chapitre 3. Gestion des paquetsUbuntu dispose d'un système complet de gestion de paquets pour l'installation, la configuration et
la suppression de programmes. Ce système permet non seulement d'accéder à une base de données
contenant plus de 17 000 paquets logiciels pour votre ordinateur Ubuntu, mais aussi de gérer les
résolutions de dépendances ainsi que les vérifications de mises à jour.
Divers outils pour interagir avec le système de gestion de paquets d'Ubuntu sont disponibles,
allant des utilitaires en simple ligne de commande qui peuvent aisément être automatisés par les
administrateurs système, jusqu'à une interface graphique simple à utiliser pour les débutants sur
Ubuntu.
Gestion des paquets
15
1. Introduction
Le système de gestion des paquets d'Ubuntu est dérivé du même système utilisé par la distribution
GNU/Linux Debian. Les paquets contiennent tous les fichiers nécessaires, ainsi que les méta-données
et les instructions permettant d'implémenter une fonctionnalité particulière ou une application
logicielle dans votre ordinateur Ubuntu.
Les paquets Debian portent généralement l'extension ".deb", et sont situés dans des dépôts qui sont
des collections de paquets existants sur divers médias, tels que les CD-ROM ou Internet. Les paquets
sont généralement au format binaire précompilé, ce qui rend leur installation rapide et ne requiert
aucune compilation de logiciel.
Un grand nombre de paquets évolués utilisent le concept de dépendances. Les dépendances sont
des paquets additionnels requis par le paquet principal pour fonctionner correctement. Par exemple,
l'application de synthèse vocale Festival nécessite festvox-kalpc16k, qui est un paquet fournissant
une des voix utilisées par le logiciel. Pour que Festival fonctionne, toutes ses dépendances devront
être installées en même temps que le paquet principal. Les outils de gestion d'applications d'Ubuntu le
feront automatiquement.
Gestion des paquets
16
2. Apt-Get
La commande apt-get est un puissant outil en ligne de commande travaillant avec l'Advanced
Packaging Tool (APT) d'Ubuntu, offrant des fonctionnalités telles que l'installation de nouveaux
logiciels, la mise à jour de ceux déjà existants, le rafraîchissement des index de paquets et même la
mise à niveau complète de votre système Ubuntu.
Étant un simple outil en ligne de commande, apt-get a de nombreux avantages par rapport aux
autres outils de gestion de paquets disponibles dans Ubuntu pour les administrateurs de serveurs.
Ces avantages comprennent la facilité d'utilisation à travers de simples connections terminal (SSH)
et la possibilité d'être utilisé dans des scripts d'administration système, qui peuvent à leur tour être
automatisés par l'utilitaire de planification cron.
Quelques exemples d'utilisation habituelle de l'utilitaire apt-get :
• Installation d'un paquet : L'installation de paquets en utilisant l'outil apt-get est relativement
simple. Par exemple, pour installer le scanner réseau nmap, entrez la commande suivante :
sudo apt-get install nmap
• Suppression d'un paquet : la suppression d'un paquet ou de paquets est également un processus
simple et direct. Pour supprimer le paquet nmap installé dans l'exemple précédent, entrez la
commande suivante :
sudo apt-get remove nmap
Paquets multiples : vous pouvez spécifier plusieurs paquets à installer ou à supprimer en
les séparant par des espaces.
• Mettre à jour l'index des paquets : l'index des paquets de APT est principalement une base de
données des paquets disponibles dans les dépôts listés dans le fichier /etc/apt/sources.list.
Pour synchroniser l'index local avec les derniers changements effectués sur les dépôts, tapez cette
ligne de commande :
sudo apt-get update
• Mettre à jour les paquets : au cours du temps, des versions mises à jour des paquets installés
sur votre ordinateur peuvent être mises en ligne dans les dépôts (des mises à jour de sécurité
par exemple). Pour mettre à jour votre système, mettez d'abord à jour l'index des paquet comme
expliqué ci-dessus, puis tapez :
sudo apt-get upgrade
Si un paquet a besoin d'installer ou de supprimer de nouvelles dépendances lorsqu'il est mis à jour,
il ne sera pas mis à jour par la commande upgrade. Pour une mise à jour de ce type, il est nécessaire
d'utiliser la commande dist-upgrade.
Gestion des paquets
17
Vous pouvez également entièrement mettre à niveau votre système Ubuntu d'une version majeure
à une autre en utilisant dist-upgrade. Par exemple, pour mettre à niveau Ubuntu de la version 5.10
à la version 6.10, vous devez d'abord vous assurer de remplacer les dépôts existants 5.10 par ceux
de 6.10 dans le fichier /etc/apt/sources.list, puis exécuter apt-get update comme détaillé
ci-dessus, et enfin faire la mise à jour du système en tapant :
#
sudo apt-get dist-upgrade#
Au bout d'un temps assez considérable, votre ordinateur sera mis à niveau vers la nouvelle version.
En général, quelques étapes supplémentaires sont nécessaires et sont expliquées dans les notes de
révision de la version vers laquelle vous avez fait la mise à niveau.
Les actions de la commande apt-get, tel que l'ajout ou la suppression de paquets, sont inscrites dans
le fichier /var/log/dpkg.log.
Pour plus d'informations sur l'utilisation d'APT, lisez le Manuel d'utilisation APT Debian
[http://www.debian.org/doc/user-manuals#apt-howto], très complet, ou tapez :
apt-get help
Gestion des paquets
18
3. Aptitude
Aptitude est une application en mode texte mais avec des menus, et servant d'interface à Advanced
Packaging Tool (APT). Beaucoup des fonctions communes de gestion des paquets, comme
l'installation, la désinstallation, et la mise à jour, sont effectuées dans Aptitude avec des commandes
utilisant une seule touche, qui sont généralement des lettres minuscules.
Il est préférable d'utiliser Aptitude dans un terminal non graphique pour s'assurer un bon
fonctionnement des touches de commandes. Vous pouvez démarrer Aptitude en tant qu'utilisateur
normal avec la commande suivante dans un terminal:
sudo aptitude
Au démarrage d'Aptitude, vous verrez une barre de menu en haut de l'écran et deux panneaux sous
cette barre. Le panneau du haut contient les catégories des paquets, telles que Nouveaux Paquets et
Paquets Non Installés. Le panneau du bas contient les informations relatives aux paquets et catégories
de paquets.
Utiliser Aptitude pour la maintenance des paquets est relativement direct, et l'interface utilisateur
simplifie les tâches courantes. Les exemples suivants sont des opérations de maintenance habituelles
des paquets, effectuées à la manière d'Aptitude :
• Installer des paquets: pour installer un paquet, localisez-le avec la catégories "Paquets non
installés", par exemple, en utilisant les touches fléchées du clavier et en appuyant sur Entrée, puis
sélectionnez le paquet que vous voulez installer. Appuyez ensuite sur la touche +, et la couleur du
paquet deviendra verte, indiquant qu'il est sélectionné pour être installé. Appuyez maintenant sur la
touche g pour avoir un liste des actions possibles. Appuyez à nouveau sur g, et on vous demandera
de devenir super-utilisateur pour continuer. Appuyez sur Entrée pour avoir une invite et tapez le
mot de passe pour vous identifier en tant que super-utilisateur. Enfin, appuyez sur g une fois de plus
et il vous sera demandé de télécharger le paquet. Appuyez sur Entrée à l'invite Continuer pour que
le téléchargement et l'installation commencent.
• Désinstaller des paquets : pour désinstaller un paquet, localisez le avec la catégories "Paquets
installés", par exemple, en utilisant les touches fléchées du clavier et en appuyant sur Entrée, puis
sélectionnez le paquet que vous voulez désinstaller. Appuyez ensuite sur la touche -, et la couleur
du paquet deviendra rose, indiquant qu'il est sélectionné pour être désinstallé. Appuyez maintenant
sur la touche g pour avoir un liste des actions possibles. Appuyez à nouveau sur g, et on vous
demandera de devenir super-utilisateur pour continuer. Appuyez sur Entrée pour avoir une invite
et tapez le mot de passe pour vous identifier en tant que super-utilisateur. Appuyez sur Entrée à
l'invite Continuer pour que la désinstallation commence.
• Mettre à jour l'index des paquets : pour mettre à jour l'index des paquets, appuyez sur la touche
u, on vous demandera alors de devenir super-utilisateur pour continuer. Appuyez sur Entrée pour
avoir une invite et tapez le mot de passe pour vous identifier en tant que super-utilisateur. La mise à
jour de l'index va commencer. Appuyez sur keycap>Entrée
Gestion des paquets
19
• Mettre à jour des paquets : pour mettre à jour des paquets, suivez la procédure ci-dessus pour
mettre à jour l'index, puis appuyez sur la touche U pour marquer tous les paquets que vous pouvez
mettre à jour. Appuyez maintenant sur la touche g pour avoir un liste des actions possibles.
Appuyez à nouveau sur g, on vous demandera alors de devenir super-utilisateur pour continuer.
Appuyez sur Entrée pour avoir une invite et tapez le mot de passe pour vous identifier en tant que
super-utilisateur. Enfin, appuyez sur g une fois de plus et il vous sera demandé de télécharger le
paquet. Appuyez sur Entrée à l'invite Continuer pour que le téléchargement et la mise à jour des
paquets commencent.
La première colonne d'information affichée dans la liste des paquets du panneau du haut, lorsqu'on
examine réellement des paquets, liste l'état actuel du paquet et utilise la syntaxe suivante pour décrire
l'état du paquet:
• i : paquet installé.
• c : le paquet n'est plus installé, mais sa configuration est conservée sur le système
• p : purgé du système
• v : paquet virtuel
• B : paquet cassé
• u : fichiers décompressés, mais paquet pas encore configuré
• C : partiellement configuré, la configuration a échouée et nécessite une correction
• H: partiellement installé, la suppression a échoué et nécessite une correction
Pour quitter Aptitude, appuyez simplement sur la touche q et confirmez que vous désirez fermer le
logiciel. Beaucoup d'autres fonctions sont disponibles à partir du menu d'Aptitude, en appuyant sur la
touche F10.
Gestion des paquets
20
4. Configuration
La liste des dépôts utilisée par Advanced Packaging Tool (APT) est enregistrée dans le fichier
de configuration /etc/apt/sources.list. Un exemple de ce fichier est présenté ici, de même que les
informations pour ajouter ou supprimer des liens vers des dépôts dans ce fichier.
Ceci [../sample/sources.list] est un exemple simple d'un fichier /etc/apt/sources.list typique.
Vous pouvez éditer le fichier pour activer ou désactiver certains dépôts. Par exemple, pour désactiver
la nécessité d'insérer le CD-ROM Ubuntu à chaque fois que vous faites une opération sur les paquets,
mettez simplement en commentaire la ligne appropriée qui se trouve au début du fichier :
# no more prompting for CD-ROM please
# deb cdrom:[Ubuntu 6.06 _Dapper Drake_ - Release i386 (20060329.1)]/ dapper main restricted
Gestion des paquets
21
5. Dépôts supplémentaires
En plus des dépôts officiellement supportés par Ubuntu, il en existe d'autres maintenus par la
communauté et qui offrent un grand nombre de paquets supplémentaires. Deux de ces dépôts les
plus populaires sont Universe et Multiverse. Bien qu'ils ne soient pas officiellement supportés par
Ubuntu, ce pourquoi ils ne sont pas activés par défaut, ils proposent généralement des paquets sûrs et
ne présentant aucun risque pour votre ordinateur.
Les paquets situés dans le dépôt Multiverse ont souvent des licences particulières qui les
empêchent d'être distribués avec un système d'exploitation libre, et ils peuvent être illégaux
dans votre pays.
Soyez attentifs au fait que ni le dépôt Universe ni le dépôt Multiverse ne contiennent des
paquets officiellement supportés. Il peut donc ne pas y avoir de mises à jour de sécurité pour
ces paquets.
De nombreuses autres sources de paquets sont disponibles, et ne proposent parfois qu'un seul
paquet, c'est le cas des sources proposés par les développeurs d'une application unique. Vous devriez
cependant toujours faire très attention quand vous utilisez des sources exotiques. Recherchez des
sources et des paquets avec prudence avant d'effectuer une installation. Certains paquets provenant de
sources non fiables peuvent rendre votre système instable ou inutilisable à certains égards.
Pour activer les dépôts Universe et Multiverse, éditez le fichier /etc/apt/sources.list et supprimez
les commentaires des lignes appropriées :
# Nous désirons les dépôts Multiverse et Universe
deb http://archive.ubuntu.com/ubuntu dapper universe multiverse
deb-src http://archive.ubuntu.com/ubuntu dapper universe multiverse
5.1. Références
Méthode pour ajouter des Dépôts (Wiki Ubuntu) [https://wiki.ubuntu.com/AddingRepositoriesHowto]
22
Chapitre 4. RéseauLes réseaux sont formés de deux ou plusieurs périphériques comme des ordinateurs, des imprimantes,
reliés entre eux par un lien physique ou sans fil dans le but de partager des informations et des
ressources ensemble.
Cette partie du Guide du serveur Ubuntu fournit des informations générales et spécifiques concernant
les réseaux, y compris un aperçu des concepts réseau et des informations détaillées sur les principaux
protocoles réseau et applications serveurs.
Réseau
23
1. Configuration du réseau
Ubuntu est fourni avec de nombreux utilitaires graphiques pour la configuration des périphériques
réseau. Ce document s'adresse aux administrateurs de serveurs et se focalisera sur la gestion de votre
réseau en ligne de commande.
1.1. Ethernet
La plus grande partie de la configuration ethernet est dans un seul fichier :
/etc/network/interfaces. Si vous n'avez pas de périphérique ethernet, seule l'interface de boucle
locale sera dans ce fichier, qui ressemblera à ceci :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
Si vous n'avez qu'un périphérique, eth0 obtenant sa configuration depuis un serveur DHCP et devant
être activé au démarrage, seulement deux lignes supplémentaires sont nécessaires :
auto eth0
iface eth0 inet dhcp
La première ligne précise que le périphérique doit être automatiquement activé au démarrage. La
deuxième ligne précise que cette interface (« iface ») eth0 doit avoir un adressage IPv4 (remplacer
« inet » par « inet6 » pour un périphérique IPv6), et doit être configurée automatiquement par DHCP.
En supposant que votre réseau et votre serveur DHCP sont correctement configurés, le réseau devrait
être opérationnel sans autre paramètrage. Le serveur DHCP fournira la passerelle par défaut (via
la commande route), l'adresse IP du périphérique (via la commande ifconfig), et les serveurs DNS
utilisés sur le réseau (dans le fichier /etc/resolv.conf).
Pour configurer votre périphérique ethernet avec une adresse IP statique et des paramètres
personnalisés, d'autres informations seront nécessaires. Supposez que vous voulez assigner l'adresse
192.168.0.2 au périphérique eth1, avec classiquement un masque 255.255.255.0, et que l'adresse de la
passerelle par défaut est 192.168.0.1. Le fichier /etc/network/interfaces ressemblera à ceci :
iface eth1 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
Dans ce cas vous devez préciser les serveurs DNS vous même dans /etc/resolv.conf, qui
ressemblera à ça :
search mydomain.com
Réseau
24
nameserver 192.168.0.1
nameserver 4.2.2.2
La directive search ajoutera mydomain.com aux requêtes de nom d'hôte dans le but de résoudre
les noms dans votre réseau. Par exemple, si le domaine de votre réseau est mydomain.com
et que vous tentez de pinger l'hôte « mybox », la requête DNS sera modifiée pour chercher
« mybox.mydomain.com ». La directive nameserver précise les serveurs qui seront utilisés pour
la résolution de noms. Si vous utilisez votre propre serveur, entrez-le ici. Sinon demandez à votre
fournisseur d'accès les adresses des serveurs DNS primaires et secondaires et entrez-les dans
/etc/resolv.conf comme expliqué ci-dessus.
De nombreuses autres configurations sont possibles, y compris pour les interfaces de modem PPP, les
réseaux IPv6, des VPN, etc. Lisez man 5 interfaces pour plus d'informations et les options supportées.
Souvenez-vous que /etc/network/interfaces est utilisé par les scripts ifup/ifdown à un niveau
plus haut que dans beaucoup d'autres distribution Linux, et que les utilitaires de bas niveau comme
ifconfig, route, et dhclient sont toujours disponibles pour configurer votre réseau comme vous le
souhaitez.
1.2. Gérer les entrées DNS
Cette section explique comment configurer le serveur de noms à utiliser dans le cas d'une résolution
d'adresse IP en nom d'hôte et vice-versa. Elle ne concerne pas la configuration du système en tant que
serveur de noms.
Pour gérer les entrées DNS, vous pouvez ajouter, modifier, ou enlever les noms des DNS du fichier
/etc/resolv.conf. Un fichier d'exemple [../sample/resolv.conf] est donné ci-dessous :
search com
nameserver 204.11.126.131
nameserver 64.125.134.133
nameserver 64.125.134.132
nameserver 208.185.179.218
L'entrée search spécifie la chaîne de caractères qui sera ajoutée à un nom d'hôte incomplet. Ici,
nous avons choisi com. Donc quand vous exécuterez ping ubuntu, ça sera interprété comme ping
ubuntu.com.
L'entréenameserver précise l'adresse IP du serveur de noms. Elle sera utilisée pour résoudre l'adresse
IP ou le nom d'hôte donné. Ce fichier peut avoir plusieurs entrées de serveurs de nom. Ils seront
utilisés par les requêtes dans l'ordre où ils sont écrits dans le fichier.
Si les serveurs DNS sont récupérés automatiquement par DHCP ou PPOE (depuis votre
fournisseur d'accès), n'ajoutez rien à ce fichier. Il sera mis à jour automatiquement.
Les modifications que vous effectuez dans /etc/resolv.conf seront supprimées au
redémarrage de la machine. Si vous désirez que ces modifications deviennent permanentes,
Réseau
25
il vous faudra installer le paquet resolvconf et mettre à jour les informations DNS du fichier
/etc/resolvconf/resolv.conf.d/base fourni avec ce paquet.
1.3. Gérer les hôtes
Pour gérer les hôtes, vous pouvez ajouter, éditer ou retirer des hôtes du fichier /etc/hosts. Ce fichier
contient les adresses IP et leur nom d'hôte correspondant. Quand votre système essaye de résoudre un
nom d'hôte vers une IP ou une IP vers un nom d'hôte, il regarde d'abord dans le fichier /etc/hosts
avant de faire appel aux serveurs DNS. Si l'adresse IP est listée dans /etc/hosts, les serveurs DNS ne
seront pas utilisés. Ce comportement peut être modifié en éditant /etc/nsswitch.conf à vos risques
et périls.
Si votre réseau contient des ordinateurs dont les adresses IP ne sont pas listées par les DNS, il est
recommandé de les ajouter dans le fichier /etc/hosts.
Réseau
26
2. TCP/IP
Transmission Control Protocol et Internet Protocol (TCP/IP) sont les protocoles standards développés
à la fin des années 1970 par la Defense Advanced Research Projects Agency (DARPA) pour servir de
moyen de communication entre les différents types d'ordinateurs et de réseaux. TCP/IP est le moteur
d'Internet, et est donc l'ensemble de protocoles le plus populaire au monde.
2.1. Introduction à TCP/IP
Les deux protocoles de TCP/IP traitent différentes parties des réseau. Internet Protocol, le "IP"
de TCP/IP, est un protocole non-connecté qui ne traite que le routage de paquets en utilisant le
datagramme IP comme unité de base de l'information passant sur le réseau. Un datagramme IP
consiste en un en-tête suivi d'un message. Le Transmission Control Protocol est le "TCP" of TCP/IP.
Il permet aux hôtes d'établir des connexions qui serviront à échanger des flux de données. TCP assure
que les données arriveront à destination dans le même ordre que lorsqu'elles ont été envoyées.
2.2. Configuration TCP/IP
La configuration du protocole TCP/IP consiste en plusieurs éléments qui doivent être paramétrés
en éditant les fichiers de configuration adaptés, ou en déployant des solutions telles qu'un serveur
Dynamic Host Configuration Protocol (DHCP). Ce dernier pourra fournir automatiquement la bonne
configuration IP aux clients. Ces données de configuration doivent être définies correctement pour
assurer un bon fonctionnement du réseau avec Ubuntu.
Les paramètres courants de configuration TCP/IP et leurs objectifs sont les suivants:
• adresse IP L'adresse IP est un identifiant unique composé de 4 nombres entre 0 et 255 séparés par
des point. Chaque nombre représente 8 bits d'une adresse qui fait au total 32 bits. Ce format est
appelé notation décimale pointée.
• Masque de sous-réseau Le masque de sous-réseau est un masque de bits, ou ensemble de
marqueurs, qui séparent les parties de l'adresse IP correspondantes au réseau, et celles qui
correspondent au sous-réseau. Par exemple dans un réseau de classe C, le masque standard qui
est 255.255.255.0 cache les 3 premiers octets de l'adresse et permet d'utiliser le dernier octet pour
adresser les hôtes du sous-réseau.
• Adresse du réseau L'adresse du réseau représente les octets qui forment la partie réseau de
l'adresse IP. par exemple, l'hôte 12.128.1.2 dans un réseau de classe A utilisera 12.0.0.0 comme
adresse du réseau. La valeur 12 du premier octet est utilisée pour représenter le réseau, et les 0 des
3 octets suivants représentent toutes les valeurs possibles pour les hôtes. Les hôtes qui utilisent les
adresses privées non routables telles que 192.168.1.100 utiliseront 192.168.1.0 comme adresse du
réseau. Elle est constituée des 3 premiers octets de l'adresse de classe C 19.168.1 et d'un 0 pour la
partie hôtes.
• Adresse de diffusion L'adresse de diffusion est une adresse IP qui permet d'envoyer des données
simultanément à tous les hôtes d'un sous-réseau au lieu d'un hôte particulier. L'adresse standard de
diffusion des réseaux IP est 255.255.255.255, mais cette adresse ne peut pas envoyer de message
Réseau
27
à tous les hôtes d'Internet car les routeurs la bloquent. Une adresse mieux appropriée sera adaptée
à un sous-réseau spécifique. Par exemple, dans un réseau de classe C, 192.168.1.0, l'adresse de
diffusion sera 192.168.1.255. Les messages diffusés sont généralement envoyés par les protocoles
comme Address Resolution Protocol (ARP) et Routing Information Protocol (RIP).
• Adresse de la passerelle Une adresse de passerelle est l'adresse IP à travers laquelle un réseau
ou un hôte d'un autre réseau peuvent être atteints. Si un hôte veut communiquer avec un hôte
d'un autre réseau, alors il doit utiliser la passerelle. En général cette passerelle sera le routeur du
réseau, qui transmettra les données aux réseaux ou hôtes extérieurs n'appartenant au réseau privé,
sur Internet par exemple. L'adresse de la passerelle doit être définie, sans quoi votre système sera
incapable de communiquer avec des hôtes extérieurs à votre réseau.
• Adresse DNS L'adresse DNS représente l'adresse IP des systèmes Domain Name Service (DNS,
ou serveurs de nom), qui traduisent les noms d'hôte en adresses IP. Il y a 3 niveaux d'adresses
DNS, du plus important au moins important : les serveurs de nom primaires ; les secondaires ; et
les tertiaires. Pour que votre système puisse résoudre des noms d'hôte en adresses IP, vous devez
spécifier une adresse DNS valide dans votre configuration TCP/IP. Dans la plupart des cas, ces
adresses seront fournies par votre fournisseur d'accès à Internet, mais de nombreux serveurs DNS
sont disponibles, comme les serveurs Level3 de Verizon, dont les adresses vont de 4.2.2.1 à 4.2.2.6.
Les adresses IP, masques, adresses de réseau, adresses de diffusion et adresses de
passerelle sont généralement spécifiés par la directive appropriée dans le fichier
/etc/network/interfaces. L'adresse de serveur de nom est spécifiée par la directive
nameserver dans le fichier /etc/resolv.conf. Pour plus d'informations, lisez la page de
manuel pour interfaces ou resolv.conf respectivement, avec les commande suivantes
dans une console :
Accédez au manuel du fichier interfaces avec la commande suivante :
man interfaces
Accédez au manuel du fichier resolv.conf avec la commande suivante : Accédez au manuel du
fichier resolv.conf avec la commande suivante :
man resolv.conf
2.3. Routage IP
Le routage IP est un moyen de choisir des chemins à travers différents réseaux pour envoyer les
données dans un réseau TCP/IP. Le routage utilise des tables de routage pour diriger les paquets de
la source vers la destination, souvent en passant à travers plusieurs nœuds intermédiaires appelés
routeurs. Le routage IP est le mode de choix de chemins le plus utilisé sur internet. Il existe 2 modes
de routage IP : le routage statique et la routage dynamique.
Le routage statique implique l'ajout manuel de règle de routage IP à la table de routage du système
et généralement cela se fait en manipulant la table de routage avec la commande route. Le routage
Réseau
28
statique bénéficie de plusieurs avantages par rapport au routage dynamique, comme la simplicité de
son implantation dans des petits réseaux, la prévisibilité (la table de routage est toujours calculée à
l'avance et donc, la route est toujours la même à chaque fois qu'elle est utilisée), et la faible charge
sur les autres routeurs et les liaisons réseaux du fait de l'absence de routage dynamique. Cependant, le
routage statique présente également quelques désavantages. Par exemple, le routage statique est limité
aux petits réseaux et n'est pas très extensible. Le routage statique n'arrive absolument pas à s'adapter
aux pannes et aux erreurs du réseau rencontrés le long de la route, du fait même de sa nature fixe.
Le routage dynamique dépend de larges réseaux où de multiples routes sont possibles entre la source
et la destination. Il utilise des protocoles spécialisés comme Router Information Protocol (RIP), qui
prend en charge l'adaptation des tables de routage qui rend le routage dynamique possible. Le routage
dynamique a de nombreux avantages sur le routage statique, comme une plus grande adaptabilité
à la taille des réseaux et la possibilité de faire face à aux pannes et surcharges du réseau. De plus il
nécessite moins de configuration manuelle des tables de routage puisque les routeurs apprennent
les uns des autres les routes disponibles. Cela empêche également de faire des erreurs humaines
dans les tables de routage. Le routage dynamique a cependant des inconvénients comme une plus
grande complexité, ainsi qu'une utilisation plus intensive du réseau à cause de la communication entre
routeurs, qui ne bénéficie pas directement à l'utilisateur, mais utilise quand me la bande passante.
2.4. TCP et UDP
TCP est un protocole dit "connecté", qui permet la correction d'erreurs, et garantit que les données
arriveront à destination grâce à un contrôle de transmission. Le contrôle de transmission détermine
quand le flux de données doit être stoppé, et les paquets précédents devraient être ré-envoyés à cause
de problèmes comme des collisions par exemple, pour assurer un transport fiable des données. TCP
est généralement utilisé dans l'échange de données importantes comme les transactions de bases de
données par exemple.
User Datagram Protocol (UDP), à l'inverse, est un protocole dit "non-connecté" qui est peu utilisé
pour l'échange de données importantes puisqu'il ne gère pas le contrôle de transmission ou d'autres
méthodes pour fiabiliser le transport des données. UDP est souvent utilisé dans des applications
de diffusion audio ou vidéo car il est plus rapide que TCP grâce à l'absence de correction d'erreur
et de contrôle de transmission, mais aussi car la perte de quelques paquets n'est généralement pas
importante pour ces applications.
2.5. ICMP
Internet Control Messaging Protocol (ICMP) est une extension de Internet Protocol (IP) défini dans
la Request For Comments (RFC) #792 et qui supporte les paquets réseau contenant des messages
de contrôle, d'erreur, et d'informations. ICMP est utilisé par des application comme ping, qui peut
déterminer si un hôte ou un périphérique est en ligne ou non. Destination Unreachable et Time
Exceeded sont des exemples de messages retournés par ICMP et qui sont utiles pour des hôtes comme
pour des routeurs par exemple.
Réseau
29
2.6. Services
Les démons sont des applications particulières qui s'exécutent généralement en permanence en tâche
de fond, et qui attendent des requêtes venant d'autres applications pour les fonctions qu'ils exercent.
De nombreux démons sont liés au réseau, et donc beaucoup de démons dans un système Ubuntu
offrent des fonctionnalités pour les réseaux. Les services possibles sont par exemple Hyper Text
Transport Protocol Daemon (httpd), qui propose des fonctions de serveur web, Secure SHell Daemon
(sshd), qui permet un accès distant sécurisé au système et le transfert de fichiers sécurisé, ou Internet
Message Access Protocol Daemon (imapd), qui offre des services de messagerie électronique.
Réseau
30
3. Configuration du pare-feu
Le noyau Linux intègre le sous-système Netfilter, qui est utilisé pour manipuler ou décider du destin
du trafic réseau arrivant, sortant ou passant par votre serveur. Tous les pare-feu modernes pour Linux
utilisent ce système pour le filtrage des paquets.
3.1. Introduction au pare-feu
Le système du noyau de filtrage de paquets serait bien peu utile aux administrateurs sans une interface
utilisateur pour le gérer. C'est le but d'iptables. Quand un paquet atteint votre serveur, Netfilter
décidera si il sera accepté, manipulé, ou rejeté en suivant les règles fournies grâce à iptables. Si vous
le maîtrisez, iptables suffit donc à gérer votre pare-feu, mais de nombreuses interfaces existent pour
vous simplifier la tâche.
3.2. Translation d'IP
Le but du masquage IP (forme de translation d'adresses) est de permettre à des machines d'un réseau
doté d'adresses IP privées non routables d'accéder à Internet en passant par une autre machine
effectuant la translation. Le trafic sortant du réseau privé pour aller vers Internet doit être manipulé
pour que les réponses puissent être acheminées vers la machine qui a fait la requête correspondante.
Pour cela, le noyau doit modifier l'adresse IP source de chaque paquet pour que les réponses lui
soient renvoyées à lui plutôt qu'à l'adresse privée qui a fait la requête, ce qui est impossible sur
Internet. Linux utilise Connection Tracking (conntrack) pour savoir à chaque instant quelle connexion
appartient à quelle machine, et rerouter ensuite les paquets vers la bonne machine. Le trafic sortant du
réseau privé apparaît donc « masqué », comme s'il provenait de la passerelle Ubuntu. Ce procédé est
appelé « Partage de connexion Internet » dans la documentation de Microsoft.
Cela peut être effectué à l'aide d'une simple règle iptables, qui pourra éventuellement changer suivant
la configuration de votre réseau :
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
La commande ci-dessus considère que votre adresse de réseau privé est 192.168.0.0/16 et que votre
interface reliée à Internet est ppp0. La syntaxe est construite comme ceci :
• -t nat -- la règle ira dans la table NAT
• -A POSTROUTING -- la règle sera ajoutée (-A) à la chaîne POSTROUTING
• -s 192.168.0.0/16 -- la règle s'applique au trafic provenant de plage d'adresse spécifiée
• -o ppp0 -- la règle s'applique au trafic devant être routé à travers l'interface réseau spécifiée
• -j MASQUERADE -- le trafic correspondant à cette règle « sautera » vers la cible MASQUERADE
pour être manipulé comme décrit ci-dessus
Chaque chaîne dans la table des filtres (la table par défaut, où la quasi-totalité des filtrages de
paquets se passent) a une politique par défaut d'acceptation (ACCEPT). Mais si vous voulez créer
un pare-feu en plus d'une passerelle, vous pouvez alors changer cette politique en une politique
Réseau
31
d'abandon (DROP) ou de rejet (REJECT). Dans ce cas, le trafic masqué doit être autorisé par la
chaîne FORWARD pour que la règle ci-dessus fonctionne :
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT
Les commandes ci-dessus vont autoriser toutes les connexions du réseau local vers Internet, ainsi que
tout le trafic en réponse à ces connexions jusqu'à la machine réelle qui a initié le trafic.
3.3. Outils
Il y a de nombreux outils disponibles pour aider à construire un pare-feu complet sans connaissance
approfondie d'iptables. Pour les outils possédant une interface graphique, Firestarter est assez connu
et facile d'accès ; fwbuilder est très puissant et l'administration semblera familière à ceux qui ont
déjà utilisé un pare-feu commercial comme Checkpoint FireWall-1. Si vous préférez un outil en
ligne de commande avec des fichiers de configuration en texte pur, Shorewall est une puissante
solution pour vous aider à configurer un pare-feu avancé quel que soit votre réseau. Si ce dernier est
relativement simple ou si vous n'avez pas de réseau, ipkungfu devrait vous donner un pare-feu prêt à
l'emploi sans aucune configuration à effectuer. Il permet tout de même d'être transformé en pare-feu
plus perfectionné grâce à des fichiers de configuration simples et très bien documentés. fireflier est
un autre outil intéressant, conçu pour être un pare-feu de bureau. Celui-ci consiste en un serveur
(fireflier-server) et une interface au choix (GTK or QT). Son comportement est similaire à la plupart
des pare-feu bien connus pour Windows.
3.4. Journaux
Les fichiers de journalisation d'un pare-feu sont essentiels pour reconnaître les attaques, les problèmes
dans vos règles de filtrage, et ils vous permettent de déceler les activités inhabituelles sur un réseau.
Vous devez cependant inclure des règles de journalisation dans votre pare-feu pour qu'ils soient
générés. Ces règles doivent se placer avant toute règle de filtrage de terminaison (une règle avec une
cible qui décide si un paquet doit être transmis ou non, comme ACCEPT, DROP ou REJECT). Par
exemple:
sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "
Une requête sur le port 80 d'une machine locale va alors générer une journalisation dans dmesg qui
ressemble à ça :
[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0
Cette journalisation apparaîtra également dans les fichiers /var/log/messages, /var/log/syslog
et /var/log/kern.log. Ce comportement peut être modifié en éditant le fichier /etc/syslog.conf
d'une façon appropriée, ou en installant et configurant ulogd et en utilisant la cible ULOG au lieu
de LOG. Le service ulogd est un démon qui audite les instructions de journalisation du noyau
spécifiques au pare-feu et peut les enregistrer dans n'importe quel fichier ou même vers une base de
données PostgreSQL ou MySQL. Vous pouvez simplifier et rendre compréhensibles vos fichiers de
Réseau
32
journalisation du pare-feu en utilisant un analyseur de journalisation comme fwanalog, fwlogwatch ou
encore lire.
Réseau
33
4. Serveur OpenSSH
4.1. Introduction
Cette section du Server Guide Ubuntu présente un puissant jeu d'utilitaires pour le contrôle à distance
d'ordinateurs et pour le transfert de données entre ordinateurs en réseau, nommé OpenSSH. Vous
apprendrez également plusieurs des différentes configurations possibles de l'application serveur
OpenSSH et comment les modifier sur votre système Ubuntu.
OpenSSH est une version libre du protocole Secure Shell (SSH), c'est une collection d'outils pour le
contrôle d'ordinateurs à distance, ou le transfert de fichiers entre ordinateurs. Les outils traditionnels
pour effectuer ces tâches, comme telnet ou rcp, ne sont pas sécurisés et font transiter le mot de passe
de l'utilisateur en clair. OpenSSH fournit un serveur et des outils clients pour faciliter le contrôle
à distance et le transfert de fichiers de façon sécurisée grâce au chiffrement des données, et donc
remplace efficacement les anciens outils.
Le serveur OpenSSH, sshd, attend en permanence des connexions depuis des clients. Quand une
requête de connexion a lieu, sshd établit la connexion correcte en fonction du type de client. Par
exemple, si un client se connecte avec le client ssh, le serveur OpenSSH va établir une connexion
sécurisée après une authentification. Si un client se connecte avec scp, le serveur OpenSSH va
commencer un transfert de fichier sécurisé entre le serveur et le client après une authentification.
OpenSSH peut utiliser de nombreuses méthodes d'authentification, par exemple un mot de passe, une
clé publique, ou un ticket Kerberos.
4.2. Installation
L'installation des applications client et serveur d'OpenSSH est simple. Pour installer les applications
clientes d'OpenSSH sur votre système Ubuntu, tapez cette commande dans un terminal :
sudo apt-get install openssh-client
Pour installer le serveur OpenSSH et les fichiers nécessaires, utilisez cette commande dans un
terminal :
sudo apt-get install openssh-server
4.3. Configuration
Vous pouvez configurer le comportement par défaut du serveur OpenSSH, sshd, en éditant le fichier
/etc/ssh/sshd_config. Pour des informations sur les options de configuration utilisées dans ce
fichier, veuillez lire le manuel approprié en tapant la commande suivante dans un terminal :
Réseau
34
man sshd_config
Il y a de nombreuses options dans le fichier de configuration de sshd qui contrôlent par exemple les
paramètres de communication et les modes d'authentification. Des exemples d'options pouvant être
éditées dans le fichier /etc/ssh/ssh_config sont présentés par la suite.
Avant d'éditer le fichier de configuration, vous devriez faire une copie du fichier original
et le protéger en écriture de façon à conserver les paramètres d'origine en référence et à
pouvoir les réutiliser en cas de besoin.
Copiez le fichier /etc/ssh/sshd_config et protégez le en écriture en tapant la commande
suivante dans un terminal :
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original
Voici des exemples de directives de configuration que vous pourriez changer :
• Pour que OpenSSH écoute sur le port 2222 au lieu du port par défaut 22, changez l'option Port
comme ceci :
Port 2222
• Pour que sshd accepte les informations de connexion basées sur une clef publique, il suffit d'ajouter
ou de modifier la ligne :
PubkeyAuthentication yes
dans le fichier /etc/ssh/sshd_config, ou si elle existe déjà, assurez-vous que la ligne
correspondante ne soit pas commentée.
• Pour que le serveur OpenSSH affiche le contenu du fichier /etc/issue.net comme une invite
avant l'affichage de l'écran de connexion, il suffit d'ajouter ou de modifier la ligne :
Banner /etc/issue.net
dans le fichier /etc/ssh/sshd_config.
Après avoir modifié le fichier /etc/ssh/sshd_config, enregistrez-le et redémarrez le service sshd
afin de prendre en compte les changements. Pour cela, saisissez la commande suivante dans un
terminal :
sudo /etc/init.d/ssh restart
Beaucoup d'autres directives de configuration pour sshd sont disponibles pour adapter son
comportement à vos besoins. Soyez conscient néanmoins que si votre unique possibilité
d'accès au serveur est ssh et que vous commettiez une erreur de configuration pour le service
sshd dans le fichier /etc/ssh/sshd_config, il se pourrait que vous vous bloquiez l'accès au
Réseau
35
serveur jusqu'à son redémarrage, ou que le service sshd refuse de redémarrer à cause d'une
directive incorrecte de configuration. Par conséquent, soyez extrêmement prudent lorsque
vous éditez ce fichier sur un serveur distant.
4.4. Références
Site Internet de OpenSSH [http://www.openssh.org/]
Page de wiki OpenSSH avancé [https://wiki.ubuntu.com/AdvancedOpenSSH]
Réseau
36
5. Serveur FTP
Le protocole de transfert de fichiers (FTP) est un protocole TCP pour télécharger et téléverser des
fichiers entre ordinateurs. FTP fonctionne sur un modèle client/serveur. Le composant serveur est
appelé démon FTP. Il écoute en permanence les requêtes FTP des clients distants. Lorsqu'il reçoit
une requête, il prend en charge l'identification et établit la connexion. Pendant la durée de la session il
éxécute toute commande envoyée par le client FTP.
L'accès à un serveur FTP peut être pris en charge de deux façons :
• Anonyme
• Authentifié
En mode anonyme, les clients distants peuvent accéder au serveur FTP en utilisant le compte par
défaut appelé « anonymous » ou « ftp » avec leur adresse de courriel comme mot de passe. En
mode authentifié, un utilisateur doit disposer d'un compte et d'un mot de passe. L'accès aux divers
répertoires et fichiers du serveur FTP dépend alors des permissions définies pour le compte utilisé
pour la connexion. En règle générale, le service FTP masque le répertoire racine du serveur FTP et
place l'utilisateur dans le répertoire d'accueil FTP. Cela permet de restreindre l'accès à une partie du
système de fichiers lors de sessions distantes.
5.1. vsftpd - Installation du serveur FTP
vsftpd est un démon FTP disponible dans Ubuntu. Son installation, sa configuration et sa maintenance
sont faciles. Pour installer vsftpd vous pouvez lancer la commande suivante dans un terminal :
sudo apt-get install vsftpd
5.2. vsftpd - Configuration du serveur FTP
Vous pouvez éditer le fichier de configuration de vsftpd, /etc/vsftpd.conf, pour changer la
configuration par défaut. Par défaut, seul le mode FTP anonyme est autorisé. Si vous voulez
désactiver cette option, vous devez modifier la ligne suivante :
anonymous_enable=YES
par
anonymous_enable=NO
Par défaut, les utilisateurs système locaux ne sont pas autorisés à se connecter au serveur FTP. Pour
changer cela, vous pouvez décommenter la ligne suivante :
#local_enable=YES
Par défaut, les utilisateurs sont autorisés à télécharger des fichiers du serveur FTP. Ils ne peuvent
cependant pas en envoyer. Pour modifier ceci, vous devez décommenter la ligne suivante :
Réseau
37
#write_enable=YES
De manière similaire, par défaut, les utilisateurs anonymes n'ont pas le droit d'envoyer des fichiers
vers le serveur FTP. Pour changer cela, vous pouvez décommenter la ligne suivante :
#anon_upload_enable=YES
Le fichier de configuration contient un grand nombre d'options paramétrables. Une information à
propos de chaque paramètre est disponible dans le fichier de configuration. Vous pouvez aussi vous
référer aux pages de manuel, man 5 vsftpd.conf, pour obtenir le détail de chaque paramètre.
Une fois vsftpd configuré, vous pouvez démarrer le démon. La commande suivante permet de
démarrer le démon vsftpd :
sudo /etc/init.d/vsftpd start
Veuillez noter que les réglages par défaut du fichier de configuration sont tels qu'ils sont
pour des raisons de sécurité. Chacun des changements cités ci-dessus diminue la sécurité du
système, par conséquent ne les appliquez qu'en cas de nécessité.
Réseau
38
6. Network File System (NFS)
NFS permet à un système de partager des répertoires et des fichiers à travers un réseau. En utilisant
NFS, utilisateurs et programmes peuvent accéder aux fichiers de systèmes distants comme s'ils étaient
des fichiers locaux.
Parmi les avantages les plus remarquables de NFS, on peut mentionner :
• Les stations de travail locales utilisent moins d'espace disque parce que les données fréquemment
utilisées peuvent être stockées sur une seule machine centrale tout en restant accessibles à d'autres
par le réseau.
• Il n'est pas nécessaire que les utilisateurs disposent d'un répertoire personnel sur chaque machine du
réseau. Les répertoires personnels peuvent être centralisés sur le serveur NFS afin d'être accessibles
par tout le réseau.
• Les périphériques de stockage, comme les lecteurs disquettes, les lecteurs de CD-ROM ou les clefs
USB, peuvent être utilisés par d'autres machines du réseau. Ceci permet de réduire le nombre de
lecteurs de supports amovibles sur un réseau.
6.1. Installation
Dans un terminal, saisissez la commande suivante pour installer le serveur NFS :
sudo apt-get install nfs-kernel-server
6.2. Configuration
Vous pouvez choisir les répertoires à exporter en les ajoutant au fichier /etc/exports. Par exemple :
/ubuntu *(ro,sync,no_root_squash)
/home *(rw,sync,no_root_squash)
Vous pouvez remplacer * par l'un des formats de nom d'hôte. La formulation du nom d'hôte devrait
être la plus précise possible pour éviter que des systèmes indésirables puissent accéder aux points de
montage NFS.
Pour démarrer le serveur NFS, saisissez la commande suivante dans un terminal :
sudo /etc/init.d/nfs-kernel-server start
6.3. Configuration du client NFS
Utilisez la commande mount pour monter un répertoire NFS partagé à partir d'une autre machine, en
tapant dans un terminal une commande telle que :
Réseau
39
sudo mount exemple.nomhote.com:/ubuntu /local/ubuntu
Le répertoire /local/ubuntu du point de montage doit exister. Il ne devrait y avoir ni
fichiers ni sous-répertoires dans le répertoire /local/ubuntu
Une autre façon de monter un partage NFS à partir d'une autre machine est d'ajouter une ligne au
fichier /etc/fstab. La ligne doit comporter le nom d'hôte du serveur NFS, le répertoire du serveur
qui doit être partagé, et le répertoire de la machine locale où le partage NFS doit être monté.
La syntaxe générale de la ligne dans le fichier /etc/fstab est celle-ci :
exemple.nomhote.com:/ubuntu /local/ubuntu nfs size=8192,wsize=8192,timeo=14,intr
6.4. Références
FAQ Linux NFS [http://nfs.sourceforge.net/]
Réseau
40
7. Dynamic Host Configuration Protocol (DHCP)
DHCP (Dynamic Host Configuration Protocol) est un service réseau qui permet aux ordinateurs
clients d'être configurés automatiquement à partir d'un serveur. Cela évite la configuration manuelle
de chaque client du réseau. Les ordinateurs configurés pour être clients DHCP n'ont aucun contrôle
sur les paramètres qu'ils reçoivent du serveur DHCP, et cette configuration est totalement transparente
pour l'utilisateur.
Les éléments de configuration les plus communs fournis par un serveur DHCP à un client DHCP
comprennent :
• Adresse IP et masque réseau
• DNS
• WINS
Cependant, un serveur DHCP peut également fournir des éléments de configuration tels que :
• Nom d'hôte
• Nom de domaine
• Passerelle par défaut
• Serveur de temps
• Serveur d'impression
L'avantage d'utiliser un serveur DHCP est qu'un changement dans la configuration du réseau, par
exemple un changement d'adresse d'un serveur DNS, n'a alors besoin d'être changé que sur le serveur
DHCP. Tous les clients réseau seront reconfigurés lors de leur prochaine connexion au serveur
DHCP. Un autre avantage est l'intégration plus facile de nouveaux ordinateurs dans le réseau,
puisqu'il n'y a pas besoin de vérifier les adresses IP disponibles. Les conflits dans les allocations
d'adresses IP sont également réduits.
Un serveur DHCP peut fournir des paramètres de configuration par deux méthodes :
Adresse MAC
Cette méthode entraîne l'utilisation de DHCP pour identifier l'adresse matérielle unique de chaque
carte réseau connectée. Par la suite, elle fournit continuellement une configuration constante à
chaque client DHCP qui émet une requête au serveur DHCP, tant qu'il utilise la même interface
réseau.
Pool d'adresses
Cette méthode entraîne la définition d'un lot (ou plage) d'adresses IP dans lequel les
configurations dynamiques des clients DHCP sont puisées selon le principe du premier arrivé,
premier servi. Lorsqu'un client DHCP n'est plus présent sur le réseau pendant une période définie,
la configuration expire et est remise dans le lot d'adresses IP disponibles pour d'autres clients.
Ubuntu est livré avec un serveur et un client DHCP. Le serveur est l'application dhcpd (dynamic host
configuration protocol daemon). L'application cliente fournie avec Ubuntu est dhclient et doit être
installée sur tous les ordinateurs devant être configurés automatiquement. Les deux programmes sont
faciles à installer et à configurer et seront automatiquement démarrés lors du démarrage du système.
Réseau
41
7.1. Installation
Pour installer dhcpd, exécutez la commande suivante dans un terminal :
sudo apt-get install dhcpd
Vous lirez le message suivant, qui vous explique quoi faire ensuite :
Veuillez noter que si vous installez le serveur DHCP pour la première
fois, il vous faudra le configurer. Merci d'arrêter le démon serveur DHCP
(/etc/init.d/dhcp stop), de modifier /etc/dhcpd.conf selon vos besoins
et votre configuration particulière, et de redémarrer le démon serveur
DHCP (/etc/init.d/dhcp start).
Il faudra également modifier /etc/default/dhcp pour définir les interfaces
que dhcpd devrait écouter. Par défaut, il écoute eth0.
NOTE : Les messages de dhcpd sont envoyés vers syslog. Consultez y
les messages de diagnostic.
Démarrage du serveur DHCP : échec du démarrage de dhcpd - consultez syslog pour un diagnostic.
7.2. Configuration
Le message d'erreur par lequel l'installation se termine peut être déroutant, mais les étapes suivantes
vous aideront à configurer le service :
Le plus souvent, vous voudrez allouer les adresses IP aléatoirement. Ceci peut être fait avec la
configuration suivante :
# Sample /etc/dhcpd.conf
# (add your comments here)
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
Le serveur DHCP attribuera alors à tout client une adresse IP comprise entre 192.168.1.10 et
192.168.1.100 ou 192.168.1.150 et 192.168.1.200. Cette adresse IP sera allouée pour 600 secondes
si le client ne réclame pas d'autre durée. Dans le cas contraire, la durée maximale d'allocation
Réseau
42
(permise) sera de 7200 secondes. Le serveur "conseillera" également au client d'utiliser les valeurs
255.255.255.0 comme masque de sous-réseau, 192.168.1.255 comme adresse de broadcast,
192.168.1.254 comme adresse de routeur / passerelle, et 192.168.1.1 et 192.168.1.2 pour les serveurs
DNS.
Si vous avez besoin de spécifier un serveur WINS pour vos clients Windows, vous devrez par
exemple utiliser l'option netbios-name-servers.
option netbios-name-servers 192.168.1.1;
Les paramètres de configuration dhcpd sont tirés du mini-manuel DHCP, que vous pouvez trouver ici
[http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/fr/html-1page/DHCP.html].
7.3. Références
FAQ DHCP [http://www.dhcp-handbook.com/dhcp_faq.html]
Réseau
43
8. Service de nom de domaine (DNS)
Le service de nom de domaine (DNS) est un service Internet qui établit la correspondance entre les
adresses IP et les noms de domaines pleinement qualifiés (FQDN : Fully Qualified Domain Name).
Ainsi, le DNS évite d'avoir à se rappeler des adresses IP. Les ordinateurs sur lesquels s'exécutent
les DNS sont appelés des serveurs de nom. Ubuntu est fourni avec BIND (Berkley Internet Naming
Daemon), le programme le plus couramment utilisé pour gérer un serveur de nom sur Linux.
8.1. Installation
Pour installer le service dns, exécutez la commande suivante dans un terminal :
sudo apt-get install bind
8.2. Configuration
Les fichiers de configuration DNS sont enregistrés dans le répertoire /etc/bind. Le fichier principal
de configuration est /etc/bind/named.conf. Le contenu du fichier de configuration par défaut est
affiché ci-dessous :
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind/README.Debian for information on the
// structure of BIND configuration files in Debian for BIND versions 8.2.1
// and later, *BEFORE* you customize this configuration file.
//
include "/etc/bind/named.conf.options";
// reduce log verbosity on issues outside our control
logging {
category lame-servers { null; };
category cname { null; };
};
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
Réseau
44
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
// add local zone definitions here
include "/etc/bind/named.conf.local";
La ligne include spécifie le nom du fichier contenant les options du DNS. La ligne directory du fichier
d'options indique au DNS où chercher les fichiers. Tous les fichiers utilisés par BIND auront un
chemin relatif à ce répertoire.
Le fichier nommé /etc/bind/db.root décrit les serveurs de nom racine dans le monde. Les serveurs
changent au cours du temps, c'est pourquoi le fichier /etc/bind/db.root doit être mis à jour
régulièrement.
La section zone définit le serveur maître, et est stockée dans le fichier mentionnée par l'étiquette
file. Chaque zone contient trois enregistrement de ressources (RR=Ressource Record): SOA, NS et
PTR. Le SOA est l'acronyme de Start Of Authority (origine de l'autorité). Le "@" est une notation
spéciale qui signifie origine. NS (Name Server) est l'enregistrement d'un serveur de nom. PTR est
un pointeur sur un nom du domaine. Pour démarrer le serveur DNS, dans un terminal lancer la
commande suivante :
sudo /etc/init.d/bind start
Vous pouvez vous référer à la documentation indiquée dans la section références pour plus de détails.
8.3. Références
Guide d'administration DNS [http://www.tldp.org/HOWTO/DNS-HOWTO.html]
Réseau
45
9. CUPS - Serveur d'impression
Le système principal d'impression sous Ubuntu est le Common UNIX Printing System (CUPS). Ce
système d'impression, qui est librement disponible et portable, est devenu le nouveau standard pour
imprimer dans la plupart des distributions Linux.
CUPS organise les tâches d'impression, les met en file d'attente, et rend possible l'impression en
réseau en utilisant le standard d'impression Internet Printing Protocol (IPP). Il offre un large support
pour un très grand nombre d'imprimantes, allant des imprimantes matricielles aux imprimantes
laser, en passant par de nombreux autres types. CUPS offre également le support PostScript Printer
Description (PPD - description d'imprimante PostScript) et l'auto-détection des imprimantes réseaux,
sans oublier une interface de configuration web simple et des outils d'administration.
9.1. Installation
Pour installer CUPS sur votre ordinateur Ubuntu, utilisez simplement sudo suivi de la commande
apt-get et spécifiez comme premier paramètre les paquets à installer. Une installation complète de
CUPS demande de nombreux paquets du fait des dépendances, mais ils peuvent être tous spécifiés sur
la même ligne de commande. Saisissez la commande suivante dans un terminal pour installer CUPS :
sudo apt-get install cupsys cupsys-client
Après une authentification avec votre mot de passe, les paquets devront se télécharger et s'installer
sans erreur. Une fois ceci effectué, le serveur CUPS sera démarré automatiquement. Pour la
résolution des problèmes, vous pouvez voir les erreurs du serveur CUPS dans son fichier journal
:/var/log/cups/error_log. Si ce fichier ne vous donne pas assez d'informations pour diagnostiquer
les problèmes que vous rencontrez, vous pouvez augmenter la verbosité du fichier journal de CUPS
en modifiant l'instruction LogLevel du fichier de configuration (dont nous parlerons plus en détail
ensuite) par « debug » voir même « debug2 », ce qui enregistrera toutes les informations. Si vous avez
effectué ce changement, n'oubliez pas de revenir à la configuration par défaut une fois votre problème
résolu, afin d'éviter que le fichier journal ne devienne énorme.
9.2. Configuration
Le comportement du système commun d'impression sous Linux est configuré par les directives
contenues dans le fichier /etc/cups/cupsd.conf. La syntaxe du fichier de configuration de CUPS est
identique au fichier principal de configuration du serveur HTTP Apache, les utilisateurs déjà habitués
à éditer les fichiers Apache devraient donc se sentir à l'aise. Quelques exemples de modifications que
vous pourriez souhaiter apporter vont être présentés ici.
Avant de modifier le fichier de configuration, vous devriez faire une copie de la
configuration originale et la protéger en écriture. Vous disposerez ainsi des paramètres par
défaut en guise de référence que vous pourrez réutiliser au besoin.
Réseau
46
Copiez le fichier /etc/cups/cupsd.conf et protégez-le en écriture en exécutant dans un
terminal la commande suivante :
sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
sudo chmod a-w /etc/cups/cupsd.conf.original
• ServerAdmin : Pour configurer le courriel de l'administrateur du serveur CUPS, éditez simplement
le fichier de configuration /etc/cups/cupsd.conf avec votre éditeur préféré, et modifiez la ligne
ServerAdmin. Par exemple, si vous êtes l'administrateur du serveur CUPS, et que votre courriel est
'bjoy@somebigco.com', alors la ligne ServerAdmin doit être modifiée de cette manière :
ServerAdmin bjoy@somebigco.com
Pour des exemples supplémentaires de directives de configuration du serveur CUPS, consultez le
manuel associé en tapant la commande suivante dans un terminal :
man cupsd.conf
À chaque modification du fichier de configuration /etc/cups/cupsd.conf, vous devrez
redémarrer le serveur CUPS en tapant dans un terminal la commande suivante :
sudo /etc/init.d/cupsys restart
Une autre partie de la configuration du serveur CUPS est réalisée dans le fichier
/etc/cups.d/ports.conf :
• Listen: Par défaut sur Ubuntu, l'installation du serveur CUPS n'écoute que sur l'interface loopback
à l'adresse IP 127.0.0.1. Afin que le serveur CUPS écoute sur l'adresse IP d'une interface réseau
réelle, vous devez ajouter une directive Listen, qui spécifie un nom d'hôte, une adresse IP, ou une
paire adresse IP/port. Par exemple, si votre serveur CUPS a l'adresse IP 192.168.10.250 sur un
réseau local et que vous souhaitez le rendre accessible à d'autres systèmes du sous-réseau, il faut
modifier le fichier /etc/cups/cups.d/ports.conf et rajouter une directive Listen, comme cela :
Listen 127.0.0.1:631 # Directive d'écoute existante sur l'interface loopback
Listen /var/run/cups/cups.sock # Directive d'écoute existante sur un socket
Listen 192.168.10.250:631 # Directive d'écoute sur l'interface réseau local, port 631 (IPP)
Dans l'exemple ci-dessus, vous pouvez commenter ou supprimer la référence à l'adresse loopback
(127.0.0.1) si vous ne voulez pas que cupsd écoute sur cette interface, mais préférez qu'il n'écoute
que sur les interfaces Ethernet du réseau local. Pour activer l'écoute sur toutes les interfaces réseau
auxquelles un nom d'hôte donné est lié, y compris l'interface loopback, vouz pourriez créer une
entrée Listen pour le nom d'hôte socrates comme cela :
Réseau
47
Listen socrates:631 # Directive d'écoute sur toutes les interfaces du nom d'hôte 'socrates'
ou en omettant la directive Listen et en utilisant Port, comme cela :
Port 631 # Ecouter sur le port 631 de toutes les interfaces
9.3. Références
Site Internet de CUPS [http://www.cups.org/]
Réseau
48
10. HTTPD - serveur Internet Apache2
Apache est le serveur Web le plus couramment utilisé sur les systèmes Linux. Les serveurs Web sont
utilisés pour délivrer les pages Web demandées par les ordinateurs clients. Les clients demandent et
affichent les pages Web en utilisant des logiciels de navigation sur le Web, tel que Firefox, Opera ou
Mozilla.
Les utilisateurs entrent une URL (Uniform ressource Locator) pour pointer sur un serveur Web au
moyen d'un « nom de domaine pleinement qualifié » (FQDN : Fully Qualified Domain Name) et
d'un chemin vers la ressource désirée. Par exemple, pour voir la page d'accueil du site web Ubuntu
[http://www.ubuntu.com] un utilisateur entrera seulement le nom de domaine (FQDN). Pour obtenir
une informations spécifique sur le support payant [http://www.ubuntu.com/support/paid], un
utilisateur entrera le nom de domaine (FQDN) suivi du chemin de la ressource.
La méthode la plus communément utilisée pour le transfert de pages web est le Protocole de Transfert
d'Hyper Texte (dont l'acronyme anglais est HTTP). Les protocoles tels que le Protocol de Tansfert
d'Hyper Texte sur Sockets Sécurisées (HTTPS) et le Protocole de Transfert de Fichiers (FTP) un
protocol permettant d'envoyer et de télécharger des fichiers sont également supportés.
Le serveur web Apache sont fréquemment utilisés en combinaison avec la base de donnée MySQL,
le language de script de Prétraitement Hyper Texte (PHP), et d'autres languages de scripts populaires
tels que le Python et le Perl. Cette configuration, d
10.1. Installation
Le serveur web Apache2 est disponible sous Ubuntu. Pour l'installer :
• Dans un terminal, saissisez cette commande :
sudo apt-get install apache2
10.2. Configuration
Apache est configuré par le biai de directives dans les fichiers textes de configuration. Le fichier
principal est appelapache2.conf. De plus, d'autres fichiers de configurations peuvent Include et les
caract
Le serveur lit également un fichier contenant les types mimes des documents; le nom de ce fichier est
donné par la directive TypesConfig dont la valeur par défaut est mime.types.
Le fichier de configuration par défaut d'Apache2 est /etc/apache2/apache2.conf. Vous pouvez
éditer ce fichier afin de configurer le serveur Apache2. Vous pouvez configurer le numéro de port, la
racine des documents, les modules, les fichiers de traces, les hôtes virtuels, etc.
Réseau
49
10.2.1. Réglages de base
Cette section donne les paramètres essentiels de la configuration du serveur Apache2. Pour de plus
amples détails, référez vous à la documentation Apache2 [http://httpd.apache.org/docs/2.0/].
• Apache2 contient par défaut une configuration des hôtes virtuels couvrant les besoins classiques.
C'est à dire qu'il est configuré avec un seul hôte virtuel (utlisant la directive VirtualHost) qui
peut être modifié, utilisé tel quel si vous ne disposez que d'un seul site, ou encore utilisé comme
modèle pour d'autres hôtes virtuels si vous disposez de plusieurs sites. Utilisé comme tel, l'hôte
virtuel par défaut sera votre site par défaut ou le site que les utilisateurs verront si l'URL entrée
ne correspond à aucun de vos sites définis par des directives ServerName. Pour modifier l'hôte
virtuel par défaut, éditez le fichier /etc/apache2/sites-available/default. Si vous souhaitez
configurer un nouvel hôte virtuel ou un site, copiez ce fichier dans le même répertoire avec un
nom de votre choix. Par exemple, sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-
available/mynewsite Éditez le nouveau fichier pour configurer le nouveau site en utilisant les
directives décrites ci-dessus.
• La directive ServerAdmin spécifie l'adresse mail qui figurera comme adresse de l'administrateur du
serveur. La valeur par défaut est webmaster@localhost. Cette valeur devrait être remplacée par une
adresse dont vous êtes destinataire (dans le cas où vous êtes l'administrateur du serveur). Si votre
site rencontre un problème, Apache2 affichera un message d'erreur contenant cette adresse mail
afin de lui rapporter le problème. Cette directive est à placer dans les fichiers de configuration de
vos sites situés dans /etc/apache2/sites-available.
• La directive Listen précise le port, et de manière optionelle l'adresse IP, sur lesquel Apache2
écoute. Si l'adresse IP n'est pas spécifiée, Apache écoutera sur toutes les adresses IP assignées à
la machine. La valeur par défaut de la directive Listen est 80. Modifiez la en 127.0.0.1:80 afin
qu'Apache2 n'écoute que sur l'interface locale et ne soit pas accessible depuis internet, en 81 (par
exemple) afin de modifier le port sur lequel Apache2 écoute, ou laissez la valeur par défaut dans la
majorité des cas. Cette directive se situe dans son propre fichier /etc/apache2/ports.conf
• La directive ServerName est optionnelle et prend pour valeur le FQDN auquel devrait répondre
votre site. L'hôte virtuel par défaut ne dispose pas de directive ServerName : il répond alors à toutes
les requêtes pour lesquelles aucune correspondance avec la directive ServerName des autres hôtes
virtuels n'a été trouvée. Si vous avez acheté le domaine ubunturocks.com et que vous souhaitez
l'héberger sur votre serveur Ubuntu, la valeur par défaut de la directive ServerName dans l'hôte
virtuel correspondant devrait être ubunturocks.com. Ajoutez cette directive au nouvel hôte virtuel
créé précédemment (/etc/apache2/sites-available/mynewsite).
Comme beaucoup de personnes pensent que le préfixe www est d'usage, vous pouvez
désirer que votre site réponde également à l'adresse www.ubunturocks.com. Utilisez la
directive ServerAlias dans ce but. Vous pouvez également utiliser les caractères jocker au
sein de la directive ServerAlias. Par exemple, *.ubunturocks.com permettra
• La directive DocumentRoot précise l'emplacement où Apache doit chercher les fichiers
du site. La valeur par défaut est /var/www. Aucun site n'est configuré à cet emplacement,
mais si vous décommentez la directive RedirectMatch dans le fichier de configuration
Réseau
50
/etc/apache2/apache2.conf les requêtes seront alors redirigées vers /var/www/apache2-default
où se trouve le site par défaut d'Apache2. Modifiez cette valeur dans le fichier de configuration de
votre hôte virtuel, et n'oubliez pas de créer le répertoire si nécessaire.
Le contenu du répertoire /etc/apache2/sites-available n'est pas utilisé par Apache2. Des
liens symboliques dans /etc/apache2/sites-enabled pointent vers les configurations de
sites disponibles situés dans le répertoire "available". Pour créer ces liens symboliques,
il faut utiliser la commande a2ensite (activation d'un site Apache2 en anglais) comme
suit : sudo a2ensite mynewsite où le fichier de configuration de votre site est
/etc/apache2/sites-available/mynewsite. De manière symétrique, il faut utiliser
a2dissite pour désactiver le site.
10.2.2. Réglages par défaut
Cette section explique la configuration par défaut du serveur Apache2. Par exemple, si vous ajoutez
un hôte virtuel, les paramètres définis à l'intérieur de l'hôte virtuel sont utilisées dans cet hôte virtuel.
Pour une directive qui n'est pas définie à l'intérieur de l'hôte virtuel, la valeur par défaut est utilisée.
• La directive DirectoryIndex stipule la page par défaut qui doit être servie lorsqu'un utilisateur
demande l'index d'un répertoire en spécifiant un slash final (/) à la fin du nom d'un répertoire.
Par exemple, lorsqu'un utilisateur demande la page http://www.example.com/this_directory/, il ou
elle obtiendra ou bien la page spécifiée par la directive DirectoryIndex si elle existe, ou bien un
listing du répertoire généré par le serveur si l'option Indexes est spécifiée, ou bien une permission
non accordée si aucun des deux cas précédents ne se vérifie. Le serveur essaiera de trouver l'une
des pages données dans la directive DirectoryIndex et renverra la première trouvée. S'il ne trouve
pas une de ces pages et si l'option Indexes est activée pour ce répertoire, le serveur génèrera et
renverra une liste au format HTML des sous-répertoires et fichiers présents dans ce répertoire.
La valeur par défaut se trouvant dans le fichier /etc/apache2/apache2.conf est " index.html
index.cgi index.pl index.php index.xhtml". Si Apache2 trouve un fichier dans le répertoire demandé
qui correspond à l'un de ces noms, le premier d'entre eux sera affiché.
• La directive ErrorDocument vous permet de spécifier le fichier qu'Apache utilise pour des
erreurs spécifiques. Par exemple, si un utilisateur fait une requête sur une ressource qui n'existe
pas, une erreur 404 sera générée, et avec la configuration par défaut Apache2, le fichier
/usr/share/apache2/error/HTTP_NOT_FOUND.html.var sera affiché. Ce fichier n'est pas
dans le répertoire racine du serveur (DocumentRoot), mais il y a une directive Alias dans
/etc/apache2/apache2.conf qui redirige les requêtes erronées vers /usr/share/apache2/error/.
Pour voir une liste des directives ErrorDocument par défaut, utilisez la commande : grep
ErrorDocument /etc/apache2/apache2.conf
• Par défaut, le serveur écrit le journal des transferts dans /var/log/apache2/access.log. Vous
pouvez modifier cela sur la base d'un journal par site dans vos fichiers de configuration d'hôte
virtuel (virtual host) avec la directive CustomLog, ou l'omettre en acceptant la valeur par défaut
spécifiée dans /etc/apache2/apache2.conf. Vous pouvez également spécifier le fichier ou
le journal des erreurs est enregistré, via la directive ErrorLog, qui a pour valeur par défaut
Réseau
51
/var/log/apache2/error.log. Celui-ci reste distinct du journal des transferts afin d'aider
à la résolution des dysfonctionnements de votre serveur Apache2. Vous pouvez également
spécifier le LogLevel (la valeur par défaut est "warn", N.d.T. : le niveau des enregistrements
correspond aux avertissements) et LogFormat(format des enregistrements) (voyez le fichier
/etc/apache2/apache2.conf pour la valeur par défaut).
• Certaines directives sont spécifiées par répertoire plutôt que par serveur. Option est l'une de ces
directives. Une section pour un répertoire est encadré par des balises de type XML, par exemple :
<Directory /var/www/mynewsite>#
...#
</Directory>
Les directives Option placés dans une section pour un répertoire acceptent une ou plusieurs de ces
valeurs (parmi d'autres), séparées par des espaces :
• ExecCGI - Autorise l'exécution des scripts CGI. Les scripts CGI ne sont pas exécutés si cette
option n'est pas choisie.
La plupart des fichiers ne doivent pas être exécutés en tant que scripts CGI. Cela
pourrait être très dangereux. Les scripts CGI doivent être placés dans un répertoire
séparé et extérieur à votre DocumentRoot, et seul ce répertoire devrait avoir l'option
ExecCGI activée. L'emplacement par défaut des scripts CGI est /usr/lib/cgi-bin.
• Includes - Autorise les inclusions côté serveur (server-side includes). Les inclusions côté
serveur (server-side includes) permettent à un fichier HTML d'inclure d'autres fichiers.
Ce n'est pas une option courante. Pour plus d'informations voyez le Howto Apache2 SSI
[http://httpd.apache.org/docs/2.0/howto/ssi.html].
• IncludesNOEXEC - Autorise les inclusions côté serveur (SSI), mais désactive les commandes
#exec et #include dans les scripts CGI.
• Indexes - Affiche une liste mise en forme du contenu du répertoire si aucun index de répertoire
(DirectoryIndex), comme index.html, n'existe dans ce dossier.
Pour des raisons de sécurité, ceci ne devrait habituellement pas être activé, et cela
ne devrait certainement pas être activé dans votre répertoire racine de documents
(DocumentRoot). Si vous êtes certain de vouloir que les utilisateurs voient le contenu
complet d'un répertoire, activez cette option avec prudence dans une section pour ce
répertoire.
• Multiviews - Support de la négociation de contenu multiviews ; cette otion est désactivée par
défaut pour des raisons de sécurité. Voyez la documentation Apache2 sur la négociation de
contenu [http://httpd.apache.org/docs/2.0/content-negotiation.html]
• SymLinksIfOwnerMatch - Ne suit les liens symboliques que si le fichier ou répertoire cible a le
même propriétaire que le lien.
10.2.3. Paramètres des hôtes virtuels
Les hôtes virtuels vous permettent de faire fonctionner différents serveurs sur la même machine, pour
différentes adresses IP, différents noms d'hôtes, ou des ports différents. Par exemple, vous pouvez
Réseau
52
faire fonctionner le site web http://www.example.com et le site web http://www.anotherexample.com
sur le même serveur web en utilisant les hôtes virtuels. Cette option correspond à la directive
<VirtualHost pour l'hNameVirtualHost pour des h
Le jeu de directives pour un hôte virtuel ne s'applique que à cet hôte virtuel en particulier. Si une
directive est définie globalement pour le serveur et n'est pas définie dans les paramètres de l'hôte
virtuel, les paramètres par défaut s'appliquent. Par exemple, vous pouvez définir l'adresse de courriel
du webmaster globalement, et ne pas définir d'adresses individuelles pour chaque hôte virtuel.
La valeur de la directive DocumentRoot doit être le répertoire racine (qui contient index.html par
exemple) pour l'hôte virtuel. Le répertoire racine par défaut est /var/www.
La directive ServerAdmin dans la section VirtualHost est l'adresse du courriel utilisée dans le pied
de page des pages d'erreurs si vous choisissez d'afficher un pied de page avec une adresse de courriel
dans les pages d'erreurs.
10.2.4. Paramètres du serveur
Cette section explique comment effectuer les réglages de base du serveur.
LockFile - La directive LockFile définit le chemin vars le fichier lockfile utilisé
lorsque le serveur est compilé avec soit USE_FCNTL_SERIALIZED_ACCEPT, soit
USE_FLOCK_SERIALIZED_ACCEPT. Ce fichier doit être enregistré sur le disque local. On peut
laisser la valeur par défaut tant que le répertoire des journaux ne se situe pas sur un partage NFS.
Dans ce cas, la valeur par défaut doit être modifiée pour un emplacement sur le disque local et en
lecture uniquement pour le super-utilisateur (root).
PidFile - La directive PidFile définit le fichier dans lequel le serveur enregistre son ID de processus
(pid : process ID). Ce fichier ne doit être accessible en lecture que par le super-utilisateur (root). Dans
la plupart des cas, la valeur par défaut peut être conservée.
User - La directive User définit le numéro d'utilisateur (userid) utilisé par le serveur pour répondre
aux requêtes. Ce paramétrage détermine les accès au serveur. Un fichier inaccessible à cet utilisateur
sera également inaccessible aux visiteur de votre site web. La valeur par défaut pour la directive User
est www-data.
A moins que vous ne sachiez exactement ce que vous faites, ne définissez jamais la directive
User à root. Utiliser root (super-utilisateur) comme valeur pour User créera d'énormes trous
de sécurité dans votre serveur web.
La directive Group est similaire à la directive User. Elle définit le groupe sous lequel le serveur web
répondra aux requêtes. Le groupe par défaut est également www-data.
10.2.5. Modules d'Apache
Apache est un serveur modulaire. Ceci implique que seules les fonctionnalités de base sont présentes
dans le cœur du serveur. Les fonctionnalités étendues sont disponibles au travers de modules qui
Réseau
53
peuvent être chargés par Apache. Par défaut, un groupe de modules de base est inclut dans le
serveur au moment de la compilation. Si le serveur est compilé pour utiliser des modules chargés
dynamiquement, alors les modules peuvent être compilés séparément, et ajoutés à tout moment en
utilisant la directive LoadModule. Autrement, Apache doit être recompilé pour ajouter ou supprimer
des modules. La compilation Ubuntu d'Apache autorise le chargement dynamique des modules.
Les directives de configuration peuvent être conditionnée à la présence d'un module en utilisant un
élément <IfModule>. Vous pouvez installer des modules Apache supplémentaires et les utiliser avec
votre serveur web. Vous pouvez installer les modules Apache en utilisant la commande apt-get. Par
exemple, pour installer le module Apache2 pour l'authentification MySQL, vous pouvez exécuter la
commande suivante dans une console :
sudo apt-get install libapache2-mod-auth-mysql
Une fois votre module installé, il sera disponible dans le répertoire /etc/apache2/mods-available.
Vous pouvez utiliser la commande a2enmod pour activer le module. Vous pouvez utiliser la
commande a2dismod pour désactiver le module. Une fois le module activé, il sera disponible dans le
répertoire /etc/apache2/mods-enabled.
10.3. Configuration HTTPS
Le module mod_ssl ajoute une fonctionnalité importante au serveur Apache2 : la capacité de crypter
les communications. Ainsi, lorsque votre navigateur communique en utilisant le cryptage SSL, le
préfixe https:// est utilisé en début d'url dans la barre d'adresse.
Le module mod_ssl est disponible dans le paquet apache2-common. Si vous avez installé ce paquet,
vous pouvez exécuter la commande suivante dans une console pour activer le module mod_ssl :
sudo a2enmod ssl
10.3.1. Certificats et sécurité
Pour configurer votre serveur sécurisé, utilisez le cryptage de clé publique pour créer une paire de clés
privée/publique. Dans la plupart des cas, vous envoyez une requête de certification (incluant votre clé
publique), prouvant l'identité de votre compagnie et le paiement d'une autorité de certification (CA :
Certficate Authorty). L'autorité de certification vérifie votre requête de certification et votre identité,
et vous renvoie un certificat pour votre serveur sécurisé.
Alternativement, vous pouvez créer votre propre certificat auto-signé. Remarquez cependant, que
les certificats auto-signés ne devraient pas être utilisés dans un environnement de production. Les
certificats auto-signés ne sont pas acceptés automatiquement par le navigateur de l'utilisateur. Les
utilisateurs reçoivent un avertissement du navigateur leur demandant s'ils acceptent le certificat pour
créer une connexion sécurisée.
Une fois que vous avez un certificat auto-signé ou un certificat signé par l'autorité de certification
(CA) de votre choix, vous devez l'installer sur votre serveur sécurisé.
Réseau
54
10.3.2. Types de certificats
Vous avez besoin d'une clé et d'un certificat pour faire fonctionner votre serveur sécurisé, ceci signifie
que vous pouvez soit générer un certificat auto-signé, soit acheter un certificat signé par une autorité
de certification (CA). Un certificat signé par CA fournit deux fonctionnalités importantes pour votre
serveur :
• Les navigateurs reconnaissent (généralement) automatiquement le certificat et permettent
l'établissement d'une connexion sécurisée sans intervention de l'utilisateur.
• Lorsqu'une autorité de certification (CA) émet un certificat, cela garanti l'identité de l'organisation
qui fournit les pages web au navigateur.
La plupart des navigateurs qui supportent le SSL ont une liste des CAs dont les certificats sont
automatiquement acceptés. Si le navigateur rencontre un certificat émis par un autorité de certification
qui n'est pas dans la liste, le navigateur demande à l'utilisateur s'il accepte ou s'il décline la connexion.
Vous pouvez générer un certificat auto-signé pour votre serveur sécurisé, mais soyez conscient qu'un
certificat auto-signé ne fournit pas la même fonctionnalité qu'un certificat signé par CA. Un certificat
auto-signé n'est pas automatiquement reconnu par la plupart des navigateurs du Web, et un certificat
auto-signé n'offre aucune garantie concernant l'identité de l'organisation qui fournit le site web. Un
certificat signé par CA fournit ces deux fonctionnalités importantes pour un serveur sécurisé. Le
processus de récupération d'un certificat depuis un CA est assez simple. En voici un rapide aperçu :
1. Créez une paire de clefs privé et publique.
2. Créez une requête de certificat basée sur la clé publique. La requête de certificat contient
l'information concernant votre serveur et la société qui l'héberge.
3. Envoyez votre requête de certificat, avec les documents prouvant votre identité, à l'autorité de
certification (CA). Nous ne pouvons pas vous dire quelle autorité de certification choisir. Votre
décision peut être basée sur votre expériences passée, ou sur l'expérience de vos amis ou collègues,
ou simplement sur des considérations financières.
Une fois l'autorité de certification choisie, vous devez suivre les instructions qu'ils fournissent sur
la procédure d'obtention du certificat.
4. Quand l'autorité de certification est sûre que vous êtes celui que vous prétendez être, elle vous
envoie un certificat numérique.
5. Installez ce certificat sur votre serveur sécurisé, et commencez à prendre en charge les connexions
sécurisées.
Que vous ayez obtenu votre certificat d'une autorité de certification, ou qu'il s'agisse d'un certificat
auto-signé, la première étape consiste à générer une clé.
10.3.3. Génération d'une Demande de Signature de Certificat (Certificate Signing Request ou CSR)
Pour générer la requête de signature de certificat (CSR : Certificate Signing Request), vous devez
créer votre propre clé. Vous pouvez lancer la commande suivante dans une console pour créer la clé :
Réseau
55
openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.....................++++++
.................++++++
unable to write 'random state'
e is 65537 (0x10001)
Enter pass phrase for server.key:
Vous pouvez maintenant saisir votre mot de passe. Pour une meilleure sécurité, il doit contenir
au minimum huit caractères. La longueur minimum lorsque vous spécifiez -des3 (algorithme de
cryptage) est de quatre caractères. Il devrait contenir des chiffres et/ou des signes de ponctuation et
ne pas se trouver dans un dictionnaire de mots. Rappelez vous également que votre mot de passe est
sensible à la casse (NdT : au sens typographique majuscules/minuscules)
Saisissez à nouveau votre mot de passe pour vérification. Une fois ressaisi correctement, la clé du
serveur est générée et stockée dans le fichier server.key.
Vous pouvez également lancer votre serveur web sécurisé sans mot de passe. C'est pratique
car vous n'aurez pas à saisir votre mot de passe à chaque fois que vous démarrez votre
serveur web sécurisé. Mais c'est hautement insécurisé et une clef compromise signifie que le
serveur lui-même sera compromis.
En tout cas, vous pouvez choisir d'exécuter votre serveur web sécurisé sans mot de passe en enlevant
l'argument -des3 pendant la phase de génération ou à l'aide de la commande suivante dans une console
:
openssl rsa -in server.key -out server.key.insecure
Une fois la commande ci-dessus exécutée, la clé non-sécurisée sera stokée dans le fichier
server.key.insecure. Vous pouvez utiliser ce fichier pour générer la CSR (requête de certificat
signé) sans mot de passe.
Pour créer un CSR, lancer la commande suivante dans un terminal :
openssl req -new -key server.key -out server.csr
Il va vous demander de saisir votre mot de passe. Si vous avez saisi le mot de passe correct, il
vous demandera de saisir le nom de la compagnie, le nom du site, votre courriel, etc. Une fois tous
ces points renseignés, votre CSR sera créée et stocké dans le fichier server.csr. Vous pouvez
transmettre cette CSR à une autorité de certification (CA). L'autorité de certification va utiliser cette
CSR et fournir un certificat. D'un autre côté, vous pouvez créer un certificat auto-signé en utilisant
cette CSR.
10.3.4. Création d'un Certificat Auto-signé (Self-Signed Certificate ou SSC)
Pour créer le certificat auto-signé, utilisez la commande suivante à l'invite d'un terminal :
Réseau
56
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
La commande ci-dessus vous demandera de saisir votre mot de passe. Une fois le mot de passe correct
entré, votre certificat sera créé et stocké dans le fichier server.crt.
Si votre serveur doit être utilisé dans un environnement de production, vous avez
probablement besoin d'un certificat signé par une autorité de certification. Il n'est pas
recommandé d'utiliser un certificat auto-signé.
10.3.5. Installation du certificat
Vous pouvez installer la clé du fichier server.key et le certificat du fichier server.crt ou le
certificat émis par l'autorité de certification, en exécutant les commandes suivantes dans une console :
sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private
Vous devriez ajouter les quatre lignes suivantes au fichier /etc/apache2/sites-available/default
ou au fichier de configuration pour votre hôte virtuel sécurisé. Vous devriez les placer dans la section
VirtualHost. Elles devraient être situées sous la ligne DocumentRoot :
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
HTTPS devrait écouter le port 443. Vous devriez ajouter la ligne suivante au fichier :
/etc/apache2/ports.conf
Listen 443
10.3.6. Accéder au serveur
Une fois votre certificat installé, vous devriez redémarrer votre serveur web. Vous pouvez exécuter la
commande suivante dans une console pour redémarrer votre serveur web :
sudo /etc/init.d/apache2 restart
Vous devez saisir votre mot de passe, et vous en souvenir, à chaque fois que vous
redémarrez votre serveur web.
Votre mot de passe vous sera demandé. Une fois le mot de passe correct saisi, le serveur web
sécurisé sera démarré. Vous pouvez accéder aux pages web du serveur sécurisé en tapant
https://your_hostname/url/ dans la barre d'adresse de votre navigateur.
Réseau
57
10.4. Références
Documentation d'Apache2 [http://httpd.apache.org/docs/2.0/]
Documentation du Mod SSL [http://www.modssl.org/docs/]
Réseau
58
11. PHP5 - Langage de script
PHP est un langage de script généraliste adapté au développement Web. Le script PHP peut être
incorporé dans du HTML. Cette section explique comment installer et configurer PHP5 sur un
système Ubuntu avec Apache2 et MySQL.
Cette section suppose que vous avez installé et configuré le serveur Web Apache2 et le serveur de
base de données MySQL. Vous pouvez vous référer aux sections sur Apache2 et sur MySQL dans ce
document pour installer et configurer Apache2 et MySQL.
11.1. Installation
PHP5 est disponible sur Ubuntu Linux.
• Pour installer PHP5 vous pouvez saisir la commande suivante dans un terminal :
sudo apt-get install php5-common php5 libapache2-mod-php5
Vous pouvez exécuter les scripts PHP5 depuis une ligne de commande. Pour exécuter des scripts
PHP5 depuis une ligne de commande, vous devez installer le paquet php5-cgi. Pour installer
php5-cgi, vous pouvez saisir la commande suivante dans un terminal :
sudo apt-get install php5-cgi
Pour utiliser MySQL avec PHP5 vous devez installer le paquet php5-mysql. Pour installer
php5-mysql, vous pouvez saisir la commande suivante dans un terminal :
sudo apt-get install php5-mysql
Réciproquement, pour utiliser PostgreSQL avec PHP5 vous devez installer le paquet php5-pgsql.
Pour installer php5-pgsql, vous pouvez saisir la commande suivante dans un terminal :
sudo apt-get install php5-pgsql
11.2. Configuration
Une fois PHP5 installé, vous pouvez exécuter des scripts PHP5 depuis votre navigateur Web. Si vous
avez installé le paquet php5-cgi, vous pouvez les exécuter dans un terminal.
Par défaut, le serveur Web Apache2 est configuré pour exécuter les scripts PHP5. En d'autres
termes, le module PHP5 est automatiquement activé dans le serveur Web Apache2 quand vous
installez le module. Veuillez vérifier si les fichiers /etc/apache2/mods-enabled/php5.conf et
/etc/apache2/mods-enabled/php5.load existent bien. S'ils n'existent pas, vous pouvez activer le
module en utilisant la commande a2enmod.
Réseau
59
Une fois que vous avez installé les paquets en rapport avec PHP5 et activé le module PHP5
d'Apache2, vous devez redémarrer le serveur Web Apache2 pour pouvoir exécuter des scripts PHP5.
Vous pouvez exécuter la commande suivante dans un terminal pour redémarrer votre serveur Web :
sudo /etc/init.d/apache2 restart
11.3. Tests
Pour tester votre installation, vous pouvez exécuter le script phpinfo de PHP5, suivant :
<?php
print_r (phpinfo());
?>
Vous pouvez enregistrer le contenu dans un fichier phpinfo.php et le placer dans le répertoire
DocumentRoot du serveur Web Apache2. Quand vous pointerez votre navigateur sur
http://hostname/phpinfo.php, il affichera les valeurs de divers paramètres de configuration de
PHP5.
Réseau
60
12. Squid - Serveur proxy
Squid est un serveur mandataire/cache web très complet qui fournit des services de cache et de relais
pour le protocole HTTP (Hyper Text Transport Protocol), le protocole FTP (File Transfer Protocol),
et d'autres protocoles réseau courants. Squid peut gérer le cache et le relais des requêtes SSL (Secure
Sockets Layer), agir en tant que cache pour les consultations DNS (Domain Name Server), et agir en
tant que cache transparent. Squid supporte également une large variété de protocoles de cache, comme
ICP (Internet Cache Protocol), HTCP (Hyper Text Caching Protocol), CARP (Cache Array Routing
Protocol), et WCCP (Web Cache Coordination Protocol).
Le serveur mandataire Squid est une excellente solution pour divers besoins de relais et de cache, son
usage s'étend de la succursale aux réseaux d'entreprise tout en fournissant des mécanismes de contrôle
d'accès étendus et modulaires et en surveillant les paramètres critiques via le protocole SNMP (Simple
Network Management Protocol). Lorsque vous sélectionnez un ordinateur pour utiliser en tant que
serveur mandataire Squid dédié, ou un serveur de cache, assurez vous que le système est configuré
avec une grande quantité de mémoire physique, car Squid maintient un cache en mémoire pour
accroître les performances.
12.1. Installation
Pour installer le serveur Squid, utilisez la commande suivante à l'invite d'un terminal :
sudo apt-get install squid squid-common
12.2. Configuration
Squid est configuré en éditant les directives contenues dans le fichier /etc/squid/squid.conf.
Les exemples suivants illustrent certaines modifications de directives qui peuvent affecter le
comportement du serveur Squid. Pour une configuration plus avancée de Squid, voyez la section
références.
Avant de modifier le fichier de configuration, vous devriez en faire une copie protégée
contre l'écriture, ainsi vous aurez les paramètres d'origine comme référence, et ré-utilisables
si nécessaire.
Copiez le fichier /etc/squid/squid.conf et protegez le en écriture en exécutant la
commande suivante dans un terminal :
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original
sudo chmod a-w /etc/squid/squid.conf.original
• Pour que votre serveur Squid écoute sur le port TCP 8888 à la place du port par défaut 3128,
modifiez la directive http_port comme ceci :
http_port 8888
Réseau
61
• Pour donner un nom d'hôte spécifique à votre serveur Squid, changez la directive visible_hostname.
Ce nom d'hôte n'as pas forcément besoin d'être le même que le nom d'hôte de la machine. Dans cet
exemple il est défini comme étant weezie
visible_hostname weezie
• A nouveau, en utilisant le contrôle d'accès Squid, vous pouvez configurer l'utilisation des services
Internet mandatés par Squid pour n'être disponible que pour les utilisateurs disposant de certaines
adresses IP. Par exemple, nous n'allons autoriser l'accès que pour les utilisateurs du sous réseau
192.168.42.0/24 :
Ajoutez ce qui suit en bas de la section ACL de votre fichier /etc/squid/squid.conf :
acl fortytwo_network src 192.168.42.0/24
Ajoutez ensuite ce qui suit, en haut de la section http_access de votre fichier
/etc/squid/squid.conf :
http_access allow fortytwo_network
• En utilisant les excellentes fonctionnalités de contrôle d'accès de Squid, vous pouvez configurer
l'usage des services Internet mandatés par Squid pour n'être accessibles que pendant les heures de
bureau. Par exemple, nous restreindrons l'accès pour les employés d'un société qui travaillent du
lundi au vendredi, entre 9h00 et 17h00, et qui utilisent le sous réseau 10.1.42.0/42 :
Ajoutez ce qui suit en bas de la section ACL de votre fichier /etc/squid/squid.conf :
acl biz_network src 10.1.42.0/24 acl biz_hours time M T W T F 9:00-17:00
Ajoutez ensuite ce qui suit, en haut de la section http_access de votre fichier
/etc/squid/squid.conf :
http_access allow biz_network biz_hours
Après avoir effectué les changements dans le fichier /etc/squid/squid.conf, enregistrez le
fichier et redémarrez le serveur squid afin que les modifications soit effectives, en utilisant
la commande suivante dans une console :
sudo /etc/init.d/squid restart
12.3. Références
Site internet de Squid [http://www.squid-cache.org/]
Réseau
62
13. Système de contrôle de version
Le contre de version est l'art de gérer les modification dans l'information. Cela a longtemps été un
outil crucial pour les développeurs, qui passent leur temps à effectuer de petites modifications sur
leurs logiciels et à les annuler le lendemain. Mais l'utilité du contrôle de version logiciel s'étend
largement au-delà du monde du développement de logiciels. Partout où vous pourrez trouver des
personnes qui utilisent l'informatique pour gérer une information qui est régulièrement modifiée, le
contrôle de version trouvera sa place.
13.1. Subversion
Subversion est un système open source de contrôle de version. En utilisant Subversion, vous pouvez
enregistrer l'historique des fichiers sources et des documents. Il gère les fichiers et les répertoires dans
le temps. Une arborescence des fichiers est placée dans un dépôt centralisé. Ce dépôt est a peu près
identique à un serveur de fichier ordinaire, sauf qu'il conserve trace de chaque changement effectué
sur les fichiers et répertoires.
13.1.1. Installation
Pour fournir l'accès à un dépôt Subversion en utilisant le protocole HTTP, vous devez installer et
configurer un serveur web. Il s'avère qu'Apache2 fonctionne avec Subversion. Reportez vous à la
section HTTP de la rubrique Apache2 pour installer et configurer Apache2. Pour fournir l'accès à
un dépôt Subversion en utilisant le protocole HTTPS, vous devez installer et configurer un certificat
numérique sur votre serveur web Apache2. Reportez vous à la section HTTPS de la rubrique Apache2
pour installer et configurer un certificat numérique.
Pour installer Subversion, utilisez la commande suivante à l'invite d'un terminal :
sudo apt-get install subversion libapache2-svn
13.1.2. Configuration du serveur
Ces étapes supposent que vous ayez installé sur votre système les paquets mentionnés ci-dessus. Cette
section explique comment créer un dépôt Subversion et accéder au projet.
13.1.2.1. Créer un dépôt Subversion
Le dépôt Subversion peut être créé en utilisant la commande suivante dans une console :
svnadmin create /path/to/repos/project
13.1.3. Modes d'accès
Les dépôts Subversion sont accessibles (vérifiés) par de nombreuses méthodes différentes, sur un
disque local, ou au travers de protocole réseau divers. L'emplacement d'un dépôt est cependant,
Réseau
63
toujours une URL. Le tableau indique comment les différents schémas d'URL sont reliés aux
méthodes d'accès disponibles.
Tableau 4.1. Modes d'accès
Schéma Méthode d'accès
file:// accès direct au dépôt (sur disque local)
http:// Accès via le protocole WebDAV au serveur web
Apache2 fournissant Subversion
https:// Identique à http://, mais avec cryptage SSL
svn:// Accès via un protocol personnalisé à un serveur
svnserve
svn+ssh:// Indentique à svn://, mais au travers un tunnel SSH
Dans cette section, nous verrons comment configurer Subversion pour toutes ces méthodes
d'accès. Nous voyons ici les bases. Pour une utilisation plus avancée, référez-vous au svn book
[http://svnbook.red-bean.com/] (NdT : livre non traduit en français pour l'heure).
13.1.3.1. Accès direct au dépôt (file://)
C'est la plus simple des méthodes d'accès. Elle ne nécessite aucun serveur Subversion pour être
exécutée. Cette méthode d'accès est utilisée lors d'un accès Subversion depuis la même machine. La
syntaxe de la commande, saisie dans un terminal, est la suivante :
svn co file:///chemin/vers/depot/nomduprojet
ou
svn co file://localhost/chemin/vers/depot/nomduprojet
Si vous ne spécifiez pas le nom d'hôte, il y a trois barres obliques (///), deux pour le
protocole (file, dans ce cas) plus la première barre oblique de l'arborescence des fichiers. Si
vous spécifiez le nom d'hôte, vous devez utiliser deux barres obliques (//).
Les permissions du dépôt dépendent des permissions du système de fichiers. Si l'utilisateur a les droits
d'accès en lecture et écriture, alors il peut extraire et déposer sur le serveur.
13.1.3.2. Accès par le protocole WebDAV (http://)
Pour accéder au dépôt Subversion en utilisant le protocole WebDAV, vous devez configurer
votre serveur web Apache 2. Vous devez ajouter les fragments de code suivants dans votre fichier
/etc/apache2/apache2.conf :
Réseau
64
<Location /svn>
DAV svn
SVNPath /chemin/vers/depot
AuthType Basic
AuthName "Nom du dépôt"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Ensuite, vous devez créer le fichier /etc/subversion/passwd. Ce fichier contient les informations
d'authentification des utilisateurs. Pour ajouter une entrée, par exemple ajouter un utilisateur, vous
pouvez exécuter la commande suivante dans un terminal :
htpasswd2 /etc/subversion/passwd nom_utilisateur
Cette commande vous demande de saisir le mot de passe. Une fois le mot de passe entré, l'utilisateur
est ajouté. Dès lors, pour accéder au dépôt, vous pouvez utiliser la commande suivante :
svn co http://nomduserveur/svn
Le mot de passe est transmis en clair, comme texte simple. Si vous craignez les fureteurs de
mot de passe, nous vous conseillons d'utiliser un chiffrement SSL. Pour plus d'information,
veuillez vous référer au chapitre suivant.
13.1.3.3. Accès par le protocole WebDAV avec un chiffrement SSL (https://)
Accéder au dépôt Subversion via le protocole WebDAV avec cryptage SSL (https://) est similaire
à http:// sauf que vous devez installer et configurer un certificat numérique sur votre serveur web
Apache2.
Vous pouvez installer un certificat numérique émis par une autorité de certification comme Verisign.
Autrement, vous pouvez installer votre propre certificat auto-signé.
Cette étape suppose que vous avez installé et configuré un certificat numérique sur votre serveur web
Apache2. Maintenant, pour accéder au dépôt Subversion, veuillez vous référer à la section ci-dessus
! Les méthodes d'accès sont exactement les mêmes, hormis le protocole. Vous devez utiliser https://
pour accéder au dépôt Subversion.
13.1.3.4. Accès via un protocole personnalisé (svn://)
Une fois le dépôt Subversion créé, vous pouvez configurer le contrôle d'accès. Vous pouvez éditer
le fichier /path/to/repos/project/conf/svnserve.conf pour cela. Par exemple, pour activer
l'authentification, vous pouvez décommenter les lignes suivantes dans le fichier de configuration :
# [general]
# password-db = passwd
Réseau
65
Après avoir décommenté ces lignes, vous pouvez gérer la liste d'utilisateurs dans le fichier passwd.
Éditez donc le fichier passwd dans le même répertoire et ajoutez le nouvel utilisateur. La syntaxe se
présente ainsi :
username = password
Pour plus de détails, référez-vous au fichier.
Maintenant, pour accéder à Subversion via le protocole personnalisé svn://, soit de la même machine,
soit d'une autre, vous pouvez exécuter svnserver en utilisant la commande svnserve. La syntaxe se
présente ainsi :
$ svnserve -d --foreground -r /path/to/repos
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve
For more usage details, please refer to:
$ svnserve --help
Une fois la commande exécutée, Subversion démarre en écoutant le port par défaut (3690). Pour
accéder au dépôt du projet, vous devez exécuter la commande suivante depuis un terminal :
svn co svn://nom_hote/projet project --username nom_utilisateur
Suivant la configuration du serveur, il vous demande un mot de passe. Une fois que vous vous êtes
authentifié, il vérifie le code sur le dépôt Subversion. Pour synchroniser le dépôt du projet avec votre
copie locale, vous pouvez exécuter la sous-commande update. La syntaxe de cette commande, saisie
dans un terminal, est la suivante :
cd repertoire_du_projet ; svn update
Pour plus d'informations sur l'utilisation de chaque sous-commande de Subversion, vous pouvez
vous référer au manuel. Par exemple, pour en savoir plus sur la commande co (checkout), exécutez la
commande suivante dans un terminal :
svn co help
13.1.3.5. Accès par un protocole personnalisé avec un chiffrement SSL (svn+ssh://)
La configuration et le processus du serveur est le même que pour la méthode svn://. Pour plus de
détails, veuillez vous référer au chapitre précédent. Dans cette étape, nous supposons que vous avez
suivi l'étape précédente et que vous avez démarré le serveur Subversion en utilisant la commande
svnserve.
De même, nous supposons que le serveur ssh s'exécute sur cette machine et que les connexions
entrantes y sont autorisées. Pour vous en assurer, essayez de vous connecter à la machine en utilisant
Réseau
66
ssh. Si vous pouvez vous identifier, alors tout est parfait. Si vous ne pouvez pas vous identifier,
résolvez le problème avant de continuer.
Le protocole svn+ssh:// est utilisé pour accéder au dépôt Subversion en utilisant un chiffrement SSL.
Le transfert de données est chiffré en utilisant cette méthode. Pour accéder au dépôt du projet (pour
une vérification par exemple), vous devez utiliser la syntaxe suivante :
svn co svn+ssh://hostname/var/svn/repos/project
Vous devez utiliser le chemin complet (/chemin/vers/dépôt/projet) pour accéder au dépôt
Subversion en utilisant cette méthode d'accès.
Suivant la configuration du serveur, il vous demande un mot de passe. Vous devez saisir le mot de
passe que vous utilisez pour vous identifier via ssh. Une fois que vous vous êtes authentifié, il vérifie
le code sur le dépôt Subversion.
13.2. Serveur CVS
CVS est un système de gestion de version. Vous pouvez l'utiliser pour enregistrer l'historique des
fichiers sources.
13.2.1. Installation
Dans un terminal, saisissez la commande suivante pour installer cvs :
sudo apt-get install cvs
Après avoir installé cvs, vous devez installer xinetd pour pouvoir démarrer ou arrêter le serveur cvs. À
l'invite de commande, saisissez la commande suivante pour installer xinetd :
sudo apt-get install xinetd
13.2.2. Configuration
Une fois que vous avez installé cvs, le dépôt sera automatiquement initialisé. Par défaut, le dépôt se
trouve dans le répertoire /var/lib/cvs. Vous pouvez changer ce chemin en exécutant la commande
suivante :
cvs -d /votre/nouveau/dépôt/cvs init
Une fois le dépôt initial paramétré, vous pouvez configurer xinetd pour qu'il démarre le serveur CVS.
Copiez les lignes suivantes dans le fichier /etc/xinetd/cvspserver.
service cvspserver
{
port = 2401
Réseau
67
socket_type = stream
protocol = tcp
user = root
wait = no
type = UNLISTED
server = /usr/bin/cvs
server_args = -f --allow-root /var/lib/cvs pserver
disable = no
}
Prenez bien soin de modifier le dépôt si vous avez changé son répertoire par défaut
(/var/lib/cvs).
Une fois que vous avez configuré xinetd, vous pouvez démarrer le serveur cvs en exécutant la
commande suivante :
sudo /etc/init.d/xinetd start
Pour vous assurer que le serveur CVS est bien en cours d'exécution, saisissez la commande suivante :
sudo netstat -tap | grep cvs
Quand vous exécutez cette commande, vous devriez voir apparaître la ligne suivante ou quelque chose
de similaire :
tcp 0 0 *:cvspserver *:* LISTEN
À partir de là, vous pouvez continuer en ajoutant des utilisateurs, de nouveaux projets ou en gérant le
serveur CVS.
CVS permet à l'utilisateur d'ajouter des utilisateurs indépendamment du système
d'exploitation installé. La manière la plus simple est probablement de passer par Utilisateurs
Linux pour CVS, bien que cela puisse poser des problèmes de sécurité. Veuillez consulter le
manuel de CVS pour plus d'informations.
13.2.3. Ajouter des projets
Cette section détaille comment ajouter un nouveau projet au dépôt CVS. Créez le répertoire et
ajoutez-y le document et les fichiers sources nécessaires. Puis, utilisez la commande suivante pour
ajouter votre projet au dépôt CVS :
cd votre/projet
cvs import -d :pserver:nomdutilisateur@nomdhote.com:/var/lib/cvs -m "Importation de mon projet dans le dépôt CVS" . nouveau_projet ouverture
Vous pouvez utiliser la variable d'environnement CVSROOT pour stocker le répertoire
racine de CVS. Une fois la variable d'environnement CVSROOT exportée, vous pouvez
vous dispenser d'utiliser l'option -d lors de l'emploi de la commande CVS ci-dessus.
Réseau
68
la chaine de caractères nouveau_projet est une balise indiquant l'identité du diffuseur et ouverture est
une balise de version. Elles n'ont aucune utilité dans ce contexte, mais elles doivent être présentes car
CVS les exige.
Lors de l'ajout d'un nouveau projet, l'utilisateur CVS par lequel vous passez doit posséder les
droits d'écriture sur le dépôt CVS (/var/lib/cvs). Par défaut, le groupe src possède les droits
d'écriture sur le dépôt CVS. Vous avez donc la possibilité d'ajouter l'utilisateur à ce groupe
et il pourra alors ajouter et gérer les projets à l'intérieur du dépôt CVS.
13.3. Références
Site internet de Subversion [http://subversion.tigris.org/]
Livre sur Subversion [http://svnbook.red-bean.com/]
Manuel de CVS [http://ximbiot.com/cvs/manual/cvs-1.11.21/cvs_toc.html]
Réseau
69
14. Bases de données
Ubuntu met à disposition deux serveurs de bases de données. Ils sont :
• MySQL™
• PostgreSQL
Ils sont disponibles dans le dépôt principal. Cette section détaille comment installer et configurer ces
deux serveurs.
14.1. MySQL
MySQL est un serveur de base de données multi-processus, multi-utilisateurs, rapide et stable. Il
est conçu pour répondre aux besoins de systèmes de production essentiels soumis à des charges
importantes, aussi bien que pour une intégration dans des logiciels à grande diffusion.
14.1.1. Installation
Pour installer MySQL, exécutez la commande suivante dans un terminal :
sudo apt-get install mysql-server mysql-client
Une fois l'installation terminée, le serveur MySQL devrait démarrer automatiquement. Vous pouvez
utiliser la commande suivante à l'invite d'un terminal pour vérifier si le serveur MySQL fonctionne :
sudo netstat -tap | grep mysql
Quand vous exécutez cette commande, vous devriez voir apparaître la ligne suivante ou quelque chose
de similaire :
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -
Si le serveur ne fonctionne pas correctement, saisissez la commande suivante pour le démarrer :
sudo /etc/init.d/mysql restart
14.1.2. Configuration
Par défaut, le mot de passe administrateur n'est pas défini. Une fois MySQL installé, la première
chose à faire est de configurer le mot de passe administrateur. Pour ce faire, utilisez les commandes
suivantes :
sudo mysqladmin -u root password nouveau_mot_de_passe_sql
Réseau
70
sudo mysqladmin -p -u root -h localhost password nouveaumotdepasse
Vous pouvez éditer le fichier /etc/mysql/my.cnf afin de configurer les réglages de base - fichier
journal, numéro de port, etc. Consultez le fichier /etc/mysql/my.cnf pour plus de détails.
14.2. PostgreSQL
PostgreSQL est un système de gestion de bases de données relationnelles objet qui a les même
fonctionnalités que les systèmes commerciaux de gestion de bases de données traditionnels avec les
améliorations que l'on peut trouver dans les systèmes SGBD de nouvelle génération.
14.2.1. Installation
Pour installer PostgreSQL, exécutez la commande suivante dans un terminal :
sudo apt-get install postgresql
Une fois que l'installation est terminée, vous devez configurer le serveur PostgreSQL suivant vos
besoins, bien que la configuration par défaut soit utilisable.
14.2.2. Configuration
Par défaut, la connexion via TCP/IP est désactivée. PostgreSQL supporte de nombreuses
méthodes d'authentification des clients. Par défaut c'est la méthode d'authentification
IDENT qui est utilisée. Veuillez consulter le Guide d'administration de PostgreSQL
[http://docs.postgresqlfr.org/8.1/admin.html].
Le paragraphe suivant part du principe que vous désirez activer les connexions TCP/IP et
utiliser la méthode MD5 pour l'authentification des clients. Les fichiers de configuration de
PostgreSQL sont enregistrés dans le répertoire /etc/postgresql/<version>/main. Par exemple,
si vous installez PostgreSQL 7.4, les fichiers de configuration sont enregistrés dans le répertoire
/etc/postgresql/7.4/main.
Pour configurer l'authentification par ident, ajoutez des entrées dans le fichier
/etc/postgresql/7.4/main/pg_ident.conf.
Pour activer les connexions TCP/IP, modifiez le fichier
/etc/postgresql/7.4/main/postgresql.conf.
Trouvez la ligne #tcpip_socket = false et transformez-la en tcpip_socket = true. Vous pouvez aussi
modifier tous les autres paramètres, si vous savez ce que vous faites! Pour plus d'informations,
référez-vous au fichier de configuration ou à la documentation de PostgreSQL.
Par défaut, les certificats des utilisateurs ne sont pas paramétrés pour une authentification MD5
des clients. C'est pourquoi il est tout d'abord nécessaire de configurer le serveur PostgreSQL
pour qu'il utilise l'authentification trust des clients, puis de se connecter à la base de données,
Réseau
71
de configurer le mot de passe et enfin de revenir à l'ancienne configuration pour utiliser
l'authentification MD5 des clients. Pour activer l'authentification trust des clients, modifiez le fichier
/etc/postgresql/7.4/main/pg_hba.conf.
Décommentez toutes les lignes existantes utilisant l'authentification ident et MD5 des clients et
ajoutez la ligne suivante :
local all postgres trust sameuser
Ensuite, exécutez la commande suivante pour démarrer le serveur PostgreSQL :
sudo /etc/init.d/postgresql start
Une fois le serveur PostgreSQL démarré, exécutez la commande suivante à l'invite d'un terminal afin
de vous connecter à la base de donnée PostgreSQL servant d'exemple par défaut.
psql -U postgres -d template1
La commande ci-dessus permet la connexion à la base de données PostgreSQL template1 en tant
qu'utilisateur postgres. Une fois connecté au serveur PostgreSQL, vous serez face à une invite de
commande SQL. Vous pouvez alors utiliser la commande SQL suivante à l'invite de psql afin de
configurer le mot de passe de l'utilisateur postgres.
template1=# ALTER USER postgres with encrypted password 'your_password';
Après configuration du mot de passe, éditez le fichier /etc/postgresql/7.4/main/pg_hba.conf afin
d'utiliser l'authentification MD5 :
Commentez la ligne trust récemment ajoutée et ajoutez la ligne suivante :
local all postgres md5 sameuser
La configuration ci-dessus n'est absolument pas complète. Veuillez vous référer au Guide
de l'administrateur PostgreSQL [http://www.postgresql.org/docs/8.1/static/admin.html] pour
configurer d'autres paramètres.
Réseau
72
15. Services de Courriel
La transmission d'un courriel d'une personne à une autre à travers un réseau ou par Internet nécessite
la mise en oeuvre de nombreux systèmes travaillant ensemble. Chacun de ces systèmes doit être
correctement configuré pour que cette tâche soit réalisée. L'expéditeur utilise un Mail User Agent
(MUA), ou client courriel, afin d'envoyer le message à travers un ou plusieurs Mail Transfer Agents
(MTA), le dernier d'entre eux le remettant à un Mail Delivery Agent (MDA) pour distribution dans la
boite à lettres du destinataire, d'où il sera retiré par le client courriel du destinataire, généralement par
l'intermédiaire d'un serveur POP3 ou IMAP.
15.1. Postfix
Postfix est le Service de Transfert de Courriel (MTA) par défaut d'Ubuntu. Il est conçu pour être sûr
autant que facile et rapide à configurer. Il est compatible avec le MTA sendmail. Cette section détaille
l'installation et la configuration de postfix. Elle explique aussi comment en faire un serveur SMTP
utilisant une connexion sécurisée (afin d'assurer la sécurité des courriels envoyés).
15.1.1. Installation
Pour installerpostfix avec les fonctions SMTP-AUTH et Transport Layer Security (TLS), utilisez la
commande suivante:
sudo apt-get install postfix
Appuyez simplement sur la touche Entrée à chaque fois que le processus d'installation vous posera
une question, la configuration sera faite plus précisément lors de la prochaine étape.
15.1.2. Configuration de base
Pour configurerpostfix, utilisez la commande suivante:
sudo dpkg-reconfigure postfix
L'interface utilisateur sera alors affichée. Dans chaque écran, sélectionnez les valeurs suivantes :
• OK
• Site Internet
• AUCUN
• courriel.exemple.fr
• courriel.exemple.fr, localhost.localdomain, localhost
• Non
• 127.0.0.0/8
• Oui
• 0
• +
Réseau
73
• AUCUN(E)
Remplacer courriel.exemple.fr par le nom d'hôte de votre serveur de messagerie.
15.1.3. Authentification SMTP
Les prochaines étapes sont la configuration de postfix pour qu'il utilise SASL pour le SMTP
AUTH (authentification sur le serveur SMTP). Au lieu de modifier le fichier de configuration
directement, vous pouvez utiliser la commande postconf pour ajuster tous les paramètres de postfix.
Les paramètres de configuration sont enregistrés dans le fichier /etc/postfix/main.cf. Par la suite
si vous voulez modifier un paramètre en particulier, vous pouvez soit utiliser une commande, soit le
changer manuellement dans le fichier.
1. Configurez Postfix pour qu'il demande une authentification (SMTP AUTH) en utilisant SASL
(saslauthd) :
postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
Ouvrez le fichier /etc/postfix/sasl/smtpd.conf et ajoutez les lignes suivantes à la fin du
fichier :
pwcheck_method: saslauthd
mech_list: plain login
2. Ensuite, configurez le certificat numérique pour TLS. Quand des questions vous seront posées,
suivez les instructions et répondez-y de façon appropriée.
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
sudo mv smtpd.key /etc/ssl/private/
sudo mv smtpd.crt /etc/ssl/certs/
sudo mv cakey.pem /etc/ssl/private/
sudo mv cacert.pem /etc/ssl/certs/
Vous pouvez recevoir le certificat numérique d'une autorité de certification. Sinon,
vous pouvez le créer vous-même. Référez-vous à Section 10.3.4, « Création d'un
Certificat Auto-signé (Self-Signed Certificate ou SSC) » [55] pour plus de détails.
Réseau
74
3. Configurez Postfix pour qu'il utilise un chiffrement par TLS à la fois pour les courriels entrants
et sortants :
postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = courriel.exemple.fr'
Après avoir exécuté toutes les commandes, le SMTP AUTH est configuré avec postfix. Le
certificat auto-signé a été créé pour TLS et il est configuré avec postfix.
Maintenant, le fichier /etc/postfix/main.cf doit ressembler à ça [../sample/postfix_configuration].
La configuration initiale de postfix est complète. Exécutez la commande suivante pour démarrer le
démon postfix :
sudo /etc/init.d/postfix start
Le démon postfix est maintenant installé, configuré et fonctionne correctement. Postfix prend en
charge SMTP AUTH comme défini dans la RFC2554 [ftp://ftp.isi.edu/in-notes/rfc2554.txt]. Il
est basé sur SASL [ftp://ftp.isi.edu/in-notes/rfc2222.txt]. Cependant, il est toujours nécessaire de
paramétrer l'authentification SASL avant de pouvoir utiliser SMTP.
15.1.4. Configuration de SASL
Libsasl2, sasl2-bin et libsasl2-modules sont nécessaire pour activer l'authentification (SMTP AUTH)
via SASL. Vous pouvez installer ces applications si vous ne les avez pas déjà installées.
sudo apt-get install libsasl2 sasl2-bin
Quelques modifications sont nécessaires pour que tout fonctionne correctement. En raison du fait
que Postfix s'exécute dans un environnement restreint au répertoire /var/spool/postfix, SASL
à besoin d'être configuré pour qu'il s'exécute dans la fausse racine (/var/run/saslauthd devient
/var/spool/postfix/var/run/saslauthd) :
mkdir -p /var/spool/postfix/var/run/saslauthd
rm -rf /var/run/saslauthd
Pour activer saslauthd, éditez le fichier /etc/default/saslauthd, et modifiez ou ajoutez le paramètre
START. Afin de configurer saslauthd pour qu'il s'exécute dans une fausse racine, ajoutez les
Réseau
75
paramètres PWDIR, PIDFILE et PARAMS. Pour finir, configurez le paramètre MECHANISMS
selon votre souhait. Le fichier doit ressembler à cela :
# This needs to be uncommented before saslauthd will be run
# automatically
START=yes
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"
# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"
MECHANISMS="pam"
Si vous le préférez, vous pouvez utiliser shadow au lieu de pam. Cela sélectionne le
transfert des mots de passe haché par MD5, ce qui est parfaitement sûr. Le nom d'utilisateur
et le mot de passe nécessaires pour l'authentification seront ceux des utilisateurs du système
que vous utilisez sur le serveur.
Ensuite, mettez à jour l'"état" dpkg de /var/spool/portfix/var/run/saslauthd. Le script
d'initialisation de saslauthd utilise ce paramètre pour créer le répertoire manquant avec les
permissions et le propriétaire appropriés :
dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd
15.1.5. Tests
La configuration de SMTP AUTH est complète. Il est maintenant temps de démarrer et de tester la
configuration. Vous pouvez exécuter la commande suivante pour démarrer le démon SASL :
sudo /etc/init.d/saslauthd start
Pour vérifier si SMTP-AUTH et TLS fonctionnent correctement, exécutez la commande suivante :
telnet courriel.exemple.fr 25
Après avoir établi la connexion au serveur de courriel postfix, saisissez :
ehlo courriel.exemple.fr
Si vous voyez les lignes suivantes parmi d'autres, alors tout fonctionne correctement. Saisissez quit
pour quitter.
250-STARTTLS
Réseau
76
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
15.2. Exim4
Exim4 est un autre agent de transfert de courriel (MTA : Message Transfer Agent) développé à
l'Université de Cambridge pour être utilisé sur des systèmes Unix connectés à internet. Exim peut être
installé à la place de sendmail, mais la configuration de exim est complètement différente de celle de
sendmail.
15.2.1. Installation
Pour installer exim4, exécutez la commande suivante :
sudo apt-get install exim4 exim4-base exim4-config
15.2.2. Configuration
Pour configurer exim4, exécutez la commande suivante :
sudo dpkg-reconfigure exim4-config
L'interface utilisateur s'affichera. Elle vous permettra de configurer de nombreux paramètres. Par
exemple, dans exim4 les fichiers de configuration sont divisés en de multiples fichiers. Si vous désirez
les réunir en un seul fichier, vous pouvez modifier la configuration en ce sens à travers cette interface.
Tous les paramètres que vous ajuster avec l'interface de configuration sont enregistrés dans le fichier
/etc/exim4/update-exim4.conf.conf. Si vous souhaitez les modifier, soit vous exécutez à nouveau
l'assistant de configuration, soit vous éditez manuellement ce fichier avec votre éditeur de texte favori.
La configuration étant faite, vous pouvez exécuter la commande suivante pour régénérer le fichier de
configuration principal :
sudo update-exim4.conf
Le fichier de configuration principal sera généré et stocké dans
/var/lib/exim4/config.autogenerated.
À aucun moment, vous ne devez éditer manuellement le fichier de configuration principal
/var/lib/exim4/config.autogenerated, car il est mis à jour automatiquement chaque fois
que vous exécutez update-exim4.conf
Vous pouvez exécutez la commande suivante pour démarrer le démon exim4.
sudo /etc/init.d/exim4 start
Réseau
77
À faire : Cette section doit couvrir la configuration SMTP AUTH avec exim4.
15.3. Serveur Dovecot
Dovecot est un serveur de réception de courrier (MDA=Mail Delivery Agent), conçu avec la sécurité
comme souci principal. Il prend en charge la majorité des formats de boîtes à lettres : mbox ou
Maildir. Cette section explique comment le paramétrer pour en faire un serveur imap ou pop3.
15.3.1. Installation
Pour installer dovecot, exécutez la commande suivante dans un terminal :
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d
15.3.2. Configuration
Pour configurer dovecot, vous pouvez modifier le fichier /etc/dovecot/dovecot.conf.
Vous pouvez choisir le protocole que vous souhaitez utiliser. Il peut être de type pop3,
pop3s (pop3 sécurisé), imap ou imaps (imap sécurisé). La description de ces protocoles
dépasse le champ de ce guide. Pour plus d'informations, référez-vous aux articles de
wikipedia sur le POP3 [http://fr.wikipedia.org/wiki/Post_Office_Protocol] et l'IMAP
[http://fr.wikipedia.org/wiki/Internet_Message_Access_Protocol].
L'IMAPS et le POP3S sont plus sûrs que les simples IMAP et POP3 car ils utilisent un chiffrement
SSL pour établir une connexion. Une fois que vous avez choisi un protocole, modifiez la ligne
suivante dans le fichier /etc/dovecot/dovecot.conf :
protocols = pop3 pop3s imap imaps
Le protocole s'activera lorsque dovecot sera démarré. Ensuite, ajoutez la ligne suivante dans la section
pop3 du fichier /etc/dovecot/dovecot.conf :
pop3_uidl_format = %08Xu%08Xv
Puis, choisissez la boite aux lettres que vous utilisez. Dovecot prend en charge les formats
maildir et mbox. Ce sont les formats de boite aux lettres les plus couramment utilisés.
Ils ont chacun leurs propres avantages qui sont présentés sur le site web de dovecot
[http://dovecot.org/doc/configuration.txt].
Une fois que vous avez choisi le type de votre boite aux lettres, éditez le fichier
/etc/dovecot/dovecot.conf et modifiez la ligne suivante :
default_mail_env = maildir:~/Maildir # (pour maildir)
ou
default_mail_env = mbox:~/mail:INBOX=/var/spool/mail/%u # (pour mbox)
Réseau
78
Vous devez configurer votre agent de transfert de courriel (MTA : Mail Transport Agent)
pour transférer les courriels entrants vers ce type de boite aux lettres si il est différent de
celui que vous avez configuré.
Une fois que vous avez configuré dovecot, démarrez le démon dovecot afin de tester votre
configuration :
sudo /etc/init.d/dovecot start
Si vous avez activé l'imap ou le pop3, vous pouvez aussi essayer de vous connecter avec les
commandes telnet localhost pop3 ou telnet localhost imap2. Si vous voyez quelque chose comme ce
qui suit, alors l'installation est une réussite :
bhuvan@rainbow:~$ telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Dovecot ready.
15.3.3. Configuration SSL de Dovecot
Pour configurer dovecot pour l'usage du protocole SSL, vous pouvez éditer le fichier
/etc/dovecot/dovecot.conf et modifier les lignes suivantes :
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
ssl_disable = no
disable_plaintext_auth = no
Les fichiers cert et key sont créés automatiquement par dovecot lorsque vous l'installez. Merci de
noter que ces clés ne sont pas signées et retourneront des erreurs "signature erronnée" lors de la
connexion depuis un client. Pour éviter cela, vous pouvez utiliser vos propres certificats SSL.
15.3.4. Configuration du pare-feu pour un serveur de courrier électronique
Pour accéder à votre serveur de courrier depuis un autre ordinateur, vous devez configurer votre
pare-feu pour permettre les connexions au serveur à travers les ports nécessaires.
• IMAP - 143
• IMAPS - 993
• POP3 - 110
• POP3S - 995
15.4. Mailman
Mailman est un programme libre permettant la gestion de discussions par courrier électronique et de
listes de bulletins d'information électroniques. De nombreuses listes de diffusion libres (dont toutes
Réseau
79
les listes de diffusion Ubuntu [http://lists.ubuntu.com]) utilisent Mailman comme logiciel de gestion
de liste de diffusion. Il est puissant, facile à installer et à gérer.
15.4.1. Installation
Mailman offre aux administrateurs et utilisateurs une interface web. Il nécessite donc la présence
d'apache et du support de mod_perl. Mailman utilise un serveur de courrier externe pour envoyer et
recevoir les messages. Il fonctionne parfaitement avec les serveurs de courrier suivants :
• Postfix
• Exim
• Sendmail
• Qmail
Nous allons voir comment installer Mailman, le serveur apache et le serveur de courriels Exim. Si
vous désirez installer Mailman associé à un serveur de courriers différent, veuillez consulter la section
"références".
15.4.1.1. Apache2
Pour installer apache2, merci de consulter Section 10.1, « Installation » [48].
15.4.1.2. Exim4
Pour installer Exim4, exécutez les commandes suivantes dans un terminal :
sudo apt-get install exim4
sudo apt-get install exim4-base
sudo apt-get install exim4-config
Une fois exim4 installé, les fichiers de configuration sont stockés dans le répertoire /etc/exim4.
Par défaut, dans Ubuntu les fichiers de configuration de exim4 sont divisés en plusieurs fichiers.
Vous pouvez changer ce comportement en modifiant le paramètre suivant dans le fichier
/etc/exim4/update-exim4.conf :
• dc_use_split_config='true'
15.4.1.3. Mailman
Pour installer Mailman, utilisez la commande suivante à l'invite d'un terminal :
sudo apt-get install mailman
Elle copie les fichiers d'installation dans le répertoire /usr/lib/cgi-bin/mailman, installe les scripts CGI
dans le répertoire /usr/lib/cgi-bin/mailman, crée l'utilisateur linux list et crée le groupe linux list. Le
processus Mailman sera la propriété de cet utilisateur.
Réseau
80
15.4.2. Configuration
Cette section suppose que vous ayez installé Mailman, Apache2 et Exim4 avec succès. Maintenant,
vous avez juste besoin de les configurer.
15.4.2.1. Apache2
Une fois Apache2 installé, vous pouvez ajoutez les lignes suivantes dans le fichier
/etc/apache2/apache2.conf :
Alias /images/mailman/ "/usr/share/images/mailman/"
Alias /pipermail/ "/var/lib/mailman/archives/public/"
Mailman utilise Apache2 pour exécuter ses scripts CGI. Les scripts CGI de Mailman sont
installés dans le répertoire /usr/lib/cgi-bin/mailman. C'est pourquoi l'URL de Mailman sera
http://hostname/cgi-bin/mailman/. Vous pouvez modifier le fichier /etc/apache2/apache2.conf si
vous souhaitez changer ce comportement.
15.4.2.2. Exim4
Une fois Exim4 installé, vous pouvez démarrer le serveur Exim grâce à la commande suivante entrée
à l'invite d'un terminal :
sudo apt-get /etc/init.d/exim4 start
Afin que Mailman utilise Exim4, vous devez de configurer Exim4. Comme mentionné précédemment,
par défaut, Exim4 utilise de multiples fichiers de configuration, de types différents. Pour plus de
détails, veuillez vous référer au site internet de Exim [http://www.exim.org]. Pour exécuter Mailman,
il nous faut ajouter un nouveau fichier de configuration aux types de configuration suivants :
• Principal
• Transport
• Routeur
Exim crée un fichier de configuration principal en triant tous ces petits fichiers de configuration.
C'est pourquoi, l'ordre de ces fichiers de configuration est très important.
15.4.2.3. Principal
Tous les fichiers de configuration appartenant à la catégorie principale sont rangés dans le répertoire
/etc/exim4/conf.d/main/. Vous pouvez ajouter le contenu suivant à un nouveau fichier, appelé
04_exim4-config_mailman :
# start
# Home dir for your Mailman installation -- aka Mailman's prefix
# directory.
# On Ubuntu this should be "/var/lib/mailman"
Réseau
81
# This is normally the same as ~mailman
MM_HOME=/var/lib/mailman
#
# User and group for Mailman, should match your --with-mail-gid
# switch to Mailman's configure script. Value is normally "mailman"
MM_UID=list
MM_GID=list
#
# Domains that your lists are in - colon separated list
# you may wish to add these into local_domains as well
domainlist mm_domains=hostname.com
#
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# These values are derived from the ones above and should not need
# editing unless you have munged your mailman installation
#
# The path of the Mailman mail wrapper script
MM_WRAP=MM_HOME/mail/mailman
#
# The path of the list config file (used as a required file when
# verifying list addresses)
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
# end
15.4.2.4. Transport
Tous les fichiers de configuration appartenant à la catégorie transport sont rangés dans le dossier
/etc/exim4/conf.d/transport/. Vous pouvez ajouter le contenu suivant à un nouveau fichier,
appelé 40_exim4-config_mailman :
mailman_transport:
driver = pipe
command = MM_WRAP \
'${if def:local_part_suffix \
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
{post}}' \
$local_part
current_directory = MM_HOME
home_directory = MM_HOME
user = MM_UID
group = MM_GID
15.4.2.5. Routeur
Tous les fichiers de configuration appartenant à la catégorie routeur sont rangés dans le dossier
/etc/exim4/conf.d/router/. Vous pouvez ajouter le contenu suivant à un nouveau fichier, appelé
101_exim4-config_mailman :
mailman_router:
Réseau
82
driver = accept
require_files = MM_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : \
-confirm+* : -join : -leave : \
-owner : -request : -admin
transport = mailman_transport
L'ordre des fichiers de configuration des catégories principale et transport est indifférent.
Mais l'ordre des fichiers de la catégorie routeur doit être respecté. Ce fichier particulier doit
apparaître avant le fichier 200_exim4-config_primary. Ces deux fichiers de configuration
contiennent le même type d'information. Le premier fichier est prioritaire. Pour plus de
détails, veuillez vous reporter à la section "références"
15.4.2.6. Mailman
Une fois Mailman installé, vous pouvez l'utiliser grâce à la commande suivante :
sudo /etc/init.d/mailman start
Une fois Mailman installé, vous devriez créer la liste de diffusion par défaut. Utilisez la commande
suivante pour créer la liste de diffusion :
sudo /usr/sbin/newlist mailman
Enter the email address of the person running the list: bhuvan at ubuntu.com
Initial mailman password:
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:
## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Hit enter to notify mailman owner...
#
Nous avons configuré exim pour qu'il reconnaisse tous les courriels issus de Mailman. Il n'est donc
pas indispensable de créer de nouvelles entrées dans /etc/aliases. Si vous avez procédé à des
Réseau
83
modifications des fichiers de configuration, merci de vous assurer de redémarrer ces services avant de
passer à la section suivante.
15.4.3. Administration
Nous supposons que vous avez fait une installation par défaut. Les scripts cgi de mailman sont
toujours dans le répertoire /usr/lib/cgi-bin/mailman/. Mailman fournit un outil d'administration web.
Pour accéder à cette page, ouvrez avec votre navigateur l'adresse suivante :
http://hostname/cgi-bin/mailman/admin
La liste de diffusion par défaut, mailman, apparaîtra sur cet écran. Si vous cliquez sur le nom de la
liste, il vous sera demandé votre mot de passe d'authentification. Si vous entrez le bon mot de passe,
alors vous pourrez modifier les paramètres d'administration de cette liste de diffusion. Vous pouvez
créer une nouvelle liste de diffusion, en ligne de commande, avec l'utilitaire /usr/sbin/newlist. Sinon,
vous pouvez aussi créer une nouvelle liste de diffusion en utilisant l'interface web.
15.4.4. Utilisateurs
Mailman fournit aux utilisateurs une interface web. Pour accéder à cette page, ouvrez avec votre
navigateur l'adresse suivante :
http://hostname/cgi-bin/mailman/listinfo
La liste de destinataires par défaut, mailman, apparaîtra sur cet écran. Si vous cliquez sur le nom de
la liste, vous verrez apparaître le formulaire d'inscription. Vous pourrez alors saisir votre adresse
électronique, votre nom (non obligatoire) et votre mot de passe afin de vous inscrire. Un courriel de
confirmation vous sera adressé. Vous pourrez alors suivre les instruction incluses pour vous inscrire.
15.4.5. Références
GNU Mailman - Manuel d'installation [http://www.list.org/mailman-install/index.html]
Guide partique - Utiliser Exim4 avec Mailman 2.1 [http://www.exim.org/howto/mailman21.html]
Réseau
84
16. Synchronisation temporelle avec NTP
Cette page décrit différentes méthodes pour maintenir votre ordinateur à l'heure. C'est utile pour les
serveurs, mais n'est pas nécessaire (ou souhaité) pour des machines de bureau.
NTP est un protocole TCP/IP permettant de synchroniser les horloges à travers un réseau. De manière
basique, un client demande l'heure actuelle à un serveur et l'utilise pour ajuster sa propre horloge.
Derrière cette description simple se cache une grande complexité ; il y a plusieurs niveaux de serveurs
NTP, dans le premier niveau les serveurs NTP sont connectés à des horloges atomiques (souvent via
le signal GPS) et les serveurs du deuxième et troisième niveau se répartissent la charge du traitement
des requêtes à travers internet. C'est pourquoi le logiciel client est bien plus complexe que ce que vous
pouvez penser. Il doit déterminer les délais de communication et ajuster l'horloge de manière à ne
pas perturber tous les autres processus qui s'exécutent sur le serveur. Mais, heureusement, toute cette
complexité n'est pas visible pour vous !
Ubuntu dispose de deux méthodes pour mettre à jour automatiquement votre horloge : ntpdate et ntpd.
16.1. Ntpdate
Par défaut, Ubuntu utilise ntpdate et l'exécutera lors de l'initialisation pour mettre à jour votre horloge
en utilisant le serveur NTP d'Ubuntu. Comme une horloge de serveur est susceptible de se décaler
considérablement entre deux redémarrages, il peut être judicieux de corriger l'horloge de temps en
temps. La façon la plus simple pour faire cela est d'utiliser cron pour l'exécuter tous les jours. Avec
votre éditeur de texte favori, créez un fichier /etc/cron.daily/ntpdate contenant :
ntpdate ntp.ubuntu.com
16.2. Ntpd
Ntpdate est un utilitaire un peu brut ; il peut uniquement ajuster l'horloge une fois par jour en faisant
une grosse correction. Le démon NTP ntpd est beaucoup plus subtil. Il calcul la dérive de l'horloge
de votre système et l'ajuste continuellement, aussi il n'y a pas de corrections importantes qui peuvent
entraîner des journaux incohérents par exemple. Cela utilise un peu de puissance de traitement et de
mémoire, mais pour un serveur moderne c'est négligeable.
Pour paramétrer ntpd :
sudo apt-get install ntp-simple
16.3. Modifier les serveurs de temps
Dans les deux cas précédant, votre système utilisera par défaut le serveur NTP d'Ubuntu à l'adresse
ntp.ubuntu.com. C'est correct, mais vous pouvez vouloir utiliser plusieurs serveurs afin d'augmenter
la précision et l'endurance du système et vous voulez peut-être utiliser des serveurs qui sont plus
Réseau
85
proche de chez vous. Pour faire cela avec ntpdate, changez le contenu de /etc/cron.daily/ntpdate
par :
ntpdate ntp.ubuntu.com pool.ntp.org
Et pour ntpd éditez /etc/ntp.conf pour y inclure les lignes des serveurs supplémentaires :
ntp.ubuntu.com
server pool.ntp.org
Vous avez peut-être remarqué pool.ntp.org dans l'exemple précédant. C'est une très bonne idée
d'utiliser un serveur DNS à répartition de charge pour renvoyer un serveur NTP depuis un pool
(groupe de serveurs), en répartissant la charge entre plusieurs serveurs différents. Encore mieux, il
y a des pools pour différentes régions, par exemple, si vous habitez en France, alors vous pouvez
utiliser fr.pool.ntp.org au lieu de pool.ntp.org. Regardez sur http://www.pool.ntp.org/ pour plus
de détails.
Vous pouvez aussi rechercher sur Internet des serveurs NTP dans votre région, et les rajouter à
votre configuration. Pour tester si un serveur fonctionne, saisissez uniquement sudo ntpdate
ntp.nom.serveur dans un terminal et regardez ce qui se passe.
16.4. Pages connexes
• Le support de NTP [http://ntp.isc.org/bin/view/Support/WebHome]
• FAQ et guides sur NTP [http://www.ntp.org/ntpfaq/NTP-a-faq.htm]
86
Chapitre 5. Réseaux WindowsLes réseaux informatiques sont souvent composés de systèmes divers, et bien qu'un réseau
uniquement composé d'ordinateurs de bureaux et de serveurs Ubuntu soit certainement amusant,
certains environnements réseaux comportent a la fois des ordinateurs sous Ubuntu et d'autres sous
Microsoft® Windows® fonctionnant ensemble en harmonie. Cette section du Server Guide Ubuntu
introduit les principes et outils utilisés pour la configuration de votre serveur Ubuntu et l'échange de
ressources réseaux avec des ordinateurs sous Windows.
Réseaux Windows
87
1. Introduction
Pour établir avec succès un réseau entre votre système Ubuntu et des clients Windows, il faut
fournir et intégrer les services utilisés couramment dans les environnements Windows. Ces services
permettent aux ordinateurs ey aux utilisateurs présents sur le réseau de partager de l'information et des
données. Ils peuvent être classifiés en trois catégories principales selon leur fonctionnalité.
• Services de partage de fichiers et d'imprimantes. Utiliser le protocole Server Message Block
(SMB) pour faciliter le partage de fichiers, de dossiers, de volumes et d'imprimantes à travers le
réseau.
• Services d'annuaire. Partager l'information vitale sur les ordinateurs et utilisateurs du réseau
avec des technologies telles que le Lightweight Directory Access Protocol (LDAP) et le Microsoft
Active Directory®.
• Authentification et accès. Établir l'identité d'un ordinateur ou d'un utilisateur et déterminer
l'information à laquelle l'ordinateur ou l'utilisateur a l'autorisation d'accéder en utilisant des
principes et technologies telles les droits d'accès sur les fichiers, les politiques de groupes, et le
service d'authentification Kerberos.
Heureusement, votre système Ubuntu fournit tous ces outils pour partager des ressources réseaux
avec des clients Windows. Une des principaux logiciels fourni avec Ubuntu est la suite d' applications
SAMBA et le serveur SMB pour les réseaux Windows. Cette section du Server Guide Ubuntu vous
explique rapidement l'installation et la configuration des applications et utilitaires serveur SAMBA.
De la documentation plus détaillée à propos de SAMBA dépasse le but de ce guide mais existe sur le
site web de SAMBA [http://www.samba.org].
Réseaux Windows
88
2. Installer SAMBA
A l'invite système, entrez la commande suivante pour installer les applications serveur SAMBA :
sudo apt-get install samba
Réseaux Windows
89
3. Configurer SAMBA
Vous pouvez configurer le serveur SAMBA en éditant le fichier /etc/samba/smb.conf pour modifier
les paramètres par défaut ou en ajouter de nouveaux. Des informations supplémentaires sur chaque
paramètre sont disponibles dans les commentaires du fichier /etc/samba/smb.conf ou en regardant la
page manuel du fichier /etc/samba/smb.conf en entrant la commande suivante dans un terminal :
man smb.conf
Avant de modifier le fichier de configuration, vous devriez faire une copie du fichier
originel et le protéger contre l'écriture pour avoir les paramètres originels comme référence
et ainsi le réutiliser si nécessaire.
Sauvegardez le fichier /etc/samba/smb.conf :
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.originel
Maintenant, éditez le fichier /etc/samba/smb.conf et faites vos modifications.
3.1. Serveur
En supplément de la suite logicielle SAMBA pour le partage de fichiers et d'imprimantes, Ubuntu
inclut aussi d'autres applications serveur puissantes destinées à fournir des fonctionnalités réseau
supplémentaires et similaires à celles fournies par les serveurs Windows aux clients Windows.
Par exemple, Ubuntu offre une gestion centralisée des ressources réseau telles que les ordinateurs
ou les utilisateurs grâce à Directory Services (services d'annuaire), et facilite l'identification et la
gestion des permissions des ordinateurs et des utilisateurs grâce à Authentication Services (services
d'authentification).
Les sections suivantes évoqueront plus en détails SAMBA et les technologies associées, telles que
le serveur Lightweight Directory Access Protocol (LDAP) ou le serveur d'authentification Kerberos.
Vous apprendrez aussi quelques directives de configuration disponibles pour SAMBA qui facilitent
l'intégration dans un réseau comportant des clients et des serveurs Windows.
3.1.1. Active Directory
Active Directory est une implémentation propriétaire de Microsoft des services d'annuaire et
est utilisé pour partager l'information sur les ressources du réseau et ses utilisateurs. En plus de
fournir une source centralisée de cette information, Active Directory agit aussi comme une autorité
centralisée de sécurité et d'authentification pour le réseau. Active Directory, qui combine des
capacités traditionnellement trouvées dans des systèmes d'annuaire distincts et spécialisés, simplifie
l'intégration, la gestion et la sécurité des ressources réseau. Le paquet SAMBA peut être configuré
pour utiliser les services Active Directory d'un contrôleur de domaine Windows.
Réseaux Windows
90
3.1.1.1. LDAP
L'application serveur LDAP fournit les fonctionnalités de service d'annuaire (Directory Services)
aux ordinateurs Windows d'une manière très similaire aux services Microsoft Active Directory.
Ces services comprennent la gestion des identités et des relations entre ordinateurs, utilisateurs, et
groupes d'ordinateurs ou d'utilisateurs qui font partie du réseau. Ils procurent une manière cohérente
de décrire, localiser et gérer ces ressources. L'implémentation libre de LDAP disponible pour votre
système Ubuntu se nomme OpenLDAP. Sur Ubuntu, les processus serveur responsables du traitement
des requêtes OpenLDAP et de la propagation des données d'un serveur LDAP à un autre sont slapd et
slurpd. OpenLDAP peut être utilisé conjointement avec SAMBA pour fournir les services de partage
des fichiers, d'imprimantes et les services d'annuaire tout comme le ferait un contrôleur de domaine
Windows pour autant que SAMBA soit compilé avec le support LDAP.
3.1.1.2. Kerberos
Le système de sécurisation des authentifications Kerberos est un service standardisé fournissant
une authentification aux ordinateurs et aux utilisateurs grâce à un serveur centralisé qui accorde
des tickets d'autorisation cryptés. Ceux-ci sont acceptés comme authentification par tout autre
ordinateur utilisant Kerberos. Parmi les avantages de l'authentification avec Kerberos, on peut citer
l'authentification réciproque, l'authentification par procuration, l'interopérabilité et une gestion
simplifiée des relations de confiance. Les processus serveurs principaux qui gèrent l'authentification
Kerberos et l'administration de la base de données Kerberos sous Ubuntu sont krb5kdc et kadmin.
SAMBA peut utiliser Kerberos comme mécanisme pour authentifier des ordinateurs et des utilisateurs
aux côtés d'un contrôleur de domaine Windows. À cette fin, il faut que Kerberos soit installé sur
le système Ubuntu, et le fichier /etc/samba/smb.conf doit être modifié pour choisir le mode
convenable de realm et security. Par exemple, modifiez le fichier /etc/samba/smb.conf et ajoutez les
valeurs :
realm = NOM_DOMAINE
security = ADS
dans le fichier, et enregistrez-le.
Assurez-vous de remplacer l'expression NOM_DOMAINE de l'exemple ci-dessus par le
nom réel de votre propre domaine Windows.
Vous devrez redémarrer les démons SAMBA pour appliquer ces changements. Redémarrez les
démons SAMBA en entrant la commande suivante dans un terminal :
sudo /etc/init.d/samba restart
3.1.2. Comptes d'ordinateurs
Les comptes d'ordinateur sont utilisés dans Directory Services pour identifier de manière unique les
ordinateurs d'un réseau, et sont traités de la même manière que les utilisateurs en terme de sécurité.
Réseaux Windows
91
Les comptes d'ordinateurs peuvent avoir des mots de passe tout comme les comptes utilisateurs, et
font l'objet d'une autorisation pour accéder aux ressources du réseau. Par exemple, si un utilisateur
du réseau avec un compte valide pour un réseau en particulier essaye de s'authentifier à partir d'un
ordinateur qui n'a pas de compte d'ordinateur valide, suivant la politique mise en œuvre sur le réseau,
il peut lui être refusé l'accès si cet ordinateur ne fait pas partie des ordinateurs autorisés.
Un compte d'ordinateur peut être ajouté au fichier de mots de passe SAMBA, pourvu que le nom
de l'ordinateur à ajouter existe déjà comme un nom de compte d'utilisateur valide dans la base de
données locale. Pour ajouter un compte d'ordinateur ou de machine au fichier de mots de passe
SAMBA, il faut utiliser la commande smbpasswd dans un terminal comme ceci :
sudo smbpasswd -a -m NOM_ORDINATEUR
Assurez-vous de remplacer la chaîne COMPUTER_NAME dans l'exemple ci-dessus avec le
nom de l'ordinateur pour lequel vous voulez ajouter un compte de machine.
3.1.3. Permissions de fichier
Les permissions de fichiers définissent les droits explicites qu'un ordinateur ou un utilisateur a sur un
dossier, fichier ou groupe de fichiers particulier. De telles permissions peuvent être définies en éditant
le fichier /etc/samba/smb.conf et en spécifiant explicitement les permissions d'un partage de fichiers
défini. Par exemple, si vous avez défini un partage SAMBA intitulé sourcedocs et souhaitez donner
les droits en lecture seule au groupe d'utilisateurs appelé planning, mais souhaitez autoriser l'accès au
partage en écriture par le groupe appelé auteurs et à l'utilisateur nommé richard, alors vous pouvez
éditer le fichier /etc/samba/smb.conf, et ajouter les lignes suivantes sous l'entrée [sourcedocs] :
read list = @planning
write list = @auteurs, richard
Sauvegardez /etc/samba/smb.conf pour que les changements prennent effet.
Une autre possibilité pour les droits d'accès est de déclarer des permissions administratives
pour une ressource partagée particulière. Les utilisateurs ayant des permissions administratives
peuvent lire, écrire, ou modifier toute information contenue dans la ressource pour laquelle ils ont
explicitement reçu ce type de droits. Par exemple, si vous voulez donner à l'utilisateur melissa des
permissions administratives sur le partage sourcedocs de l'exemple, vous devez éditer le fichier
/etc/samba/smb.conf et ajouter la ligne suivante sous l'entrée [sourcedocs] :
admin users = melissa
Sauvegardez /etc/samba/smb.conf pour que les changements prennent effet.
3.2. Clients
Ubuntu comporte des applications clientes et des capacités pour accéder aux ressources partagées
grâce au protocole SMB. Par exemple, l'utilitaire nommé smbclient permet d'accéder aux systèmes
Réseaux Windows
92
de fichiers partagés à distance d'une façon similaire à un client FTP. Pour accéder à un répertoire
partagé connu comme documents, proposé par un ordinateur sous Windows, nommé bill, on utilisera
smbclient, avec une commande de ce type dans un terminal :
smbclient //bill/documents -U <nomutilisateur>
Il vous sera alors demandé le mot de passe de l'utilisateur spécifié après le paramètre -U, et après
la réussite de l'authentification, vous obtiendrez une invite vous permettant de manipuler ou
transférer des fichiers avec une syntaxe semblable à celle d'un client FTP en mode texte. Pour plus
d'informations sur l'utilitaire smbclient, consultez la page du manuel avec la commande :
man smbclient
Le montage d'une ressource réseau fournie par le protocole SMB est aussi possible grâce à la
commande mount. Par exemple, pour monter un répertoire nommé code-projet disponible sur un
serveur Windows developpement pour l'utilisateur toto sur votre système Ubuntu dans le répertoire
/mnt/pcode, vous devrez entrer la commande suivante à l'invite :
mount -t smbfs -o username=toto //developpement/code-projet- /mnt/pcode
Il vous sera alors demandé d'entrer le mot de passe utilisateur, et après vous être authentifié, le
contenu de la ressource partagée sera accessible localement via le point de montage spécifié par le
dernier argument de la commande mount. Pour déconnecter la ressource partagée, utilisez simplement
la commande umount comme vous le feriez avec n'importe quel autre système de fichiers monté. Par
exemple :
umount /mnt/pcode
3.2.1. Comptes d'utilisateurs
Les comptes d'utilisateurs définissent des personnes avec un certain niveau d'autorisation pour utiliser
un certain ordinateur et des ressources réseau. Typiquement, dans un environnement réseau, un
compte d'utilisateur est fourni à chaque personne autorisée à accéder à un ordinateur ou à un réseau,
où des politiques de sécurité et des permissions définissent alors de quels droits explicites ce compte
d'utilisateur dispose. Pour définir des utilisateurs réseau SAMBA sur votre système Ubuntu, vous
pouvez utiliser la commande smbpasswd. Par exemple, pour ajouter un utilisateur SAMBA à votre
système Ubuntu avec le nom d'utilisateur toto, vous pourriez entrer ceci à l'invite de commande :
smbpasswd -a toto
L'application smbpasswd vous demandera alors d'entrer un mot de passe pour l'utilisateur :
Réseaux Windows
93
Nouveau mot de passe SMB :
Entrez le mot de passe que vous désirez fixer pour l'utilisateur, et l'application smbpasswd vous
demandera de confirmer le mot de passe:
Retapez le nouveau mot de passe SMB :
Confirmez le mot de passe et smbpasswd ajoutera une entrée pour l'utilisateur au fichier de mots de
passe SAMBA.
3.2.2. Groupes
Les Groupes définissent un ensemble d'ordinateurs ou d'utilisateurs qui ont un niveau d'accès commun
à des ressources réseau particulières, et offrent une certaine granularité dans le contrôle d'accès à de
telles ressources. Par exemple, si un groupe qa est défini et contient les utilisateurs freda, danika,
et rob, et un second groupe support est défini et contient les utilisateurs danika, jeremy et vincent,
alors certaines ressources réseau configurées pour autoriser l'accès au groupe qa autoriseraient par
conséquent l'accès à freda, danika et rob, mais pas à jeremy ou à vincent. Comme l'utilisateur danika
appartient aux deux groupes qa et support, elle sera capable d'accéder aux ressources configurées
comme accessibles par les deux groupes, tandis que tous les autres utilisateurs n'auront accès qu'aux
ressources autorisant explicitement le groupe dont ils font partie.
Lors de la définition de groupes dans le fichier de configuration de SAMBA, /etc/samba/smb.conf,
la syntaxe reconnue est l'ajout d'un préfixe "@" au nom de groupe. Par exemple, si vous souhaitez
définir un groupe nommé sysadmin dans une certaine section du fichier /etc/samba/smb.conf, vous
devez entrer le nom de groupe @sysadmin.
3.2.3. Stratégie de groupe
Les stratégies de groupes définissent certains réglages de configuration SAMBA en rapport avec le
domaine ou le groupe de travail auquel appartient le compte d'ordinateur, ainsi que d'autres réglages
globaux du serveur SAMBA. Par exemple, si le serveur SAMBA appartient au groupe de travail
Windows appelé NIVEAU1, le fichier /etc/samba/smb.conf pourrait alors être modifié de la manière
suivante :
workgroup = NIVEAU1
Enregistrez le fichier et redémarrez les démons SAMBA pour appliquer le changement.
D'autres réglages de stratégie globale importants comprennent la chaîne du serveur qui définit le
nom serveur NETBIOS qui sera annoncé aux autres machines du réseau Windows par votre système
Ubuntu. C'est le nom par lequel votre système Ubuntu sera reconnu par les clients Windows et
d'autres ordinateurs capables de parcourir le réseau avec le protocole SMB. De plus, vous pouvez
indiquer le nom et l'emplacement du fichier journal du serveur SAMBA en utilisant la directive log
file dans le fichier /etc/samba/smb.conf.
Réseaux Windows
94
Quelques directives supplémentaires influençant la stratégie de groupe globale concernent la
spécification de la nature globale des ressources partagées. Par exemple, l'emplacement de certaines
directives sous la section [global] du fichier /etc/samba/smb.conf concernera toutes les ressources
partagées, sauf si une directive identique remplace celle-ci sous la section d'une ressource partagée
particulière. Vous indiquez que tous les partages peuvent être parcourus par tous les clients du réseau
en plaçant la directive browseable, qui prend une valeur booléenne, sous la section [global] du fichier
/etc/samba/smb.conf. C'est-à-dire que si vous modifiez le fichier en ajoutant la ligne :
browseable = true
sous la section [global] de /etc/samba/smb.conf, tous les partages offerts par votre système Ubuntu
via SAMBA pourront être parcourus par tous les clients autorisés, sauf si un partage particulier
contient une directive browseable = false qui prendra le pas sur la directive globale.
Les directives public et writeable sont d'autres exemples qui fonctionnent de la même manière. La
directive public prend une valeur booléenne et détermine si une ressource partagée particulière est
visible par tous les clients, autorisés ou non. La directive writeable prend également une valeur
booléenne et détermine si une ressource partagée particulière est accessible en écriture par n'importe
quel client du réseau.
95
Annexe A. Creative Commons by
Attribution-ShareAlike 2.0CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT
PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE
AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
DAMAGES RESULTING FROM ITS USE.
License
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN
AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU
THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH
TERMS AND CONDITIONS.
1. Definitions.
a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in
which the Work in its entirety in unmodified form, along with a number of other contributions,
constituting separate and independent works in themselves, are assembled into a collective
whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as
defined below) for the purposes of this License.
b. "Derivative Work" means a work based upon the Work or upon the Work and other
pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization,
motion picture version, sound recording, art reproduction, abridgment, condensation, or any
other form in which the Work may be recast, transformed, or adapted, except that a work that
constitutes a Collective Work will not be considered a Derivative Work for the purpose of
this License. For the avoidance of doubt, where the Work is a musical composition or sound
recording, the synchronization of the Work in timed-relation with a moving image ("synching")
will be considered a Derivative Work for the purpose of this License.
c. "Licensor" means the individual or entity that offers the Work under the terms of this License.
d. "Original Author" means the individual or entity who created the Work.
e. "Work" means the copyrightable work of authorship offered under the terms of this License.
f. "You" means an individual or entity exercising rights under this License who has not
previously violated the terms of this License with respect to the Work, or who has received
Creative Commons by Attribution-ShareAlike 2.0
96
express permission from the Licensor to exercise rights under this License despite a previous
violation.
g. "License Elements" means the following high-level license attributes as selected by Licensor
and indicated in the title of this License: Attribution, ShareAlike.
2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising
from fair use, first sale or other limitations on the exclusive rights of the copyright owner under
copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You
a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright)
license to exercise the rights in the Work as stated below:
a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to
reproduce the Work as incorporated in the Collective Works;
b. to create and reproduce Derivative Works;
c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly
by means of a digital audio transmission the Work including as incorporated in Collective
Works;
d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly
by means of a digital audio transmission Derivative Works.
e. For the avoidance of doubt, where the work is a musical composition:
i. "Performance Royalties Under Blanket Licenses." Licensor waives the exclusive right
to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI,
SESAC), royalties for the public performance or public digital performance (e.g. webcast) of
the Work.
ii. "Mechanical Rights and Statutory Royalties." Licensor waives the exclusive right to
collect, whether individually or via a music rights society or designated agent (e.g. Harry
Fox Agency), royalties for any phonorecord You create from the Work ("cover version")
and distribute, subject to the compulsory license created by 17 USC Section 115 of the US
Copyright Act (or the equivalent in other jurisdictions).
f. "Webcasting Rights and Statutory Royalties." For the avoidance of doubt, where the Work
is a sound recording, Licensor waives the exclusive right to collect, whether individually or via
a performance-rights society (e.g. SoundExchange), royalties for the public digital performance
(e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of
the US Copyright Act (or the equivalent in other jurisdictions).
The above rights may be exercised in all media and formats whether now known or hereafter
devised. The above rights include the right to make such modifications as are technically necessary
to exercise the rights in other media and formats. All rights not expressly granted by Licensor are
hereby reserved.
4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by
the following restrictions:
Creative Commons by Attribution-ShareAlike 2.0
97
a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work
only under the terms of this License, and You must include a copy of, or the Uniform Resource
Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly
display, publicly perform, or publicly digitally perform. You may not offer or impose any terms
on the Work that alter or restrict the terms of this License or the recipients' exercise of the
rights granted hereunder. You may not sublicense the Work. You must keep intact all notices
that refer to this License and to the disclaimer of warranties. You may not distribute, publicly
display, publicly perform, or publicly digitally perform the Work with any technological
measures that control access or use of the Work in a manner inconsistent with the terms of this
License Agreement. The above applies to the Work as incorporated in a Collective Work, but
this does not require the Collective Work apart from the Work itself to be made subject to the
terms of this License. If You create a Collective Work, upon notice from any Licensor You
must, to the extent practicable, remove from the Collective Work any reference to such Licensor
or the Original Author, as requested. If You create a Derivative Work, upon notice from any
Licensor You must, to the extent practicable, remove from the Derivative Work any reference to
such Licensor or the Original Author, as requested.
b. You may distribute, publicly display, publicly perform, or publicly digitally perform a
Derivative Work only under the terms of this License, a later version of this License with
the same License Elements as this License, or a Creative Commons iCommons license that
contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.0 Japan).
You must include a copy of, or the Uniform Resource Identifier for, this License or other
license specified in the previous sentence with every copy or phonorecord of each Derivative
Work You distribute, publicly display, publicly perform, or publicly digitally perform. You
may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this
License or the recipients' exercise of the rights granted hereunder, and You must keep intact all
notices that refer to this License and to the disclaimer of warranties. You may not distribute,
publicly display, publicly perform, or publicly digitally perform the Derivative Work with any
technological measures that control access or use of the Work in a manner inconsistent with the
terms of this License Agreement. The above applies to the Derivative Work as incorporated in a
Collective Work, but this does not require the Collective Work apart from the Derivative Work
itself to be made subject to the terms of this License.
c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or
any Derivative Works or Collective Works, You must keep intact all copyright notices for the
Work and give the Original Author credit reasonable to the medium or means You are utilizing
by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title
of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier,
if any, that Licensor specifies to be associated with the Work, unless such URI does not refer
to the copyright notice or licensing information for the Work; and in the case of a Derivative
Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation
of the Work by Original Author," or "Screenplay based on original Work by Original Author").
Such credit may be implemented in any reasonable manner; provided, however, that in the case
Creative Commons by Attribution-ShareAlike 2.0
98
of a Derivative Work or Collective Work, at a minimum such credit will appear where any
other comparable authorship credit appears and in a manner at least as prominent as such other
comparable authorship credit.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY
OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE,
MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT,
OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE
OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS
DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION
MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN
NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY
SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
a. This License and the rights granted hereunder will terminate automatically upon any breach by
You of the terms of this License. Individuals or entities who have received Derivative Works or
Collective Works from You under this License, however, will not have their licenses terminated
provided such individuals or entities remain in full compliance with those licenses. Sections 1,
2, 5, 6, 7, and 8 will survive any termination of this License.
b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration
of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right
to release the Work under different license terms or to stop distributing the Work at any time;
provided, however that any such election will not serve to withdraw this License (or any other
license that has been, or is required to be, granted under the terms of this License), and this
License will continue in full force and effect unless terminated as stated above.
8. Miscellaneous
a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the
Licensor offers to the recipient a license to the Work on the same terms and conditions as the
license granted to You under this License.
b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the
recipient a license to the original Work on the same terms and conditions as the license granted
to You under this License.
c. If any provision of this License is invalid or unenforceable under applicable law, it shall not
affect the validity or enforceability of the remainder of the terms of this License, and without
Creative Commons by Attribution-ShareAlike 2.0
99
further action by the parties to this agreement, such provision shall be reformed to the minimum
extent necessary to make such provision valid and enforceable.
d. No term or provision of this License shall be deemed waived and no breach consented to unless
such waiver or consent shall be in writing and signed by the party to be charged with such
waiver or consent.
e. This License constitutes the entire agreement between the parties with respect to the Work
licensed here. There are no understandings, agreements or representations with respect to the
Work not specified here. Licensor shall not be bound by any additional provisions that may
appear in any communication from You. This License may not be modified without the mutual
written agreement of the Licensor and You.
Creative Commons is not a party to this License, and makes no warranty whatsoever in connection
with the Work. Creative Commons will not be liable to You or any party on any legal theory for any
damages whatsoever, including without limitation any general, special, incidental or consequential
damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if
Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights
and obligations of Licensor.
Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL,
neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative
Commons without the prior written consent of Creative Commons. Any permitted use will be in
compliance with Creative Commons' then-current trademark usage guidelines, as may be published
on its website or otherwise made available upon request from time to time.
Creative Commons may be contacted at http://creativecommons.org/.
100
Annexe B. GNU Free Documentation
LicenseVersion 1.2, November 2002
Copyright © 2000,2001,2002 Free Software Foundation, Inc.
Free Software Foundation, Inc.
51 Franklin St, Fifth Floor,
Boston,
MA
02110-1301
USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it
is not allowed.
Version 1.2, November 2002
GNU Free Documentation License
101
1. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document
"free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially. Secondarily, this License
preserves for the author and publisher a way to get credit for their work, while not being considered
responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must
themselves be free in the same sense. It complements the GNU General Public License, which is a
copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software
needs free documentation: a free program should come with manuals providing the same freedoms
that the software does. But this License is not limited to software manuals; it can be used for any
textual work, regardless of subject matter or whether it is published as a printed book. We recommend
this License principally for works whose purpose is instruction or reference.
GNU Free Documentation License
102
2. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed by the
copyright holder saying it can be distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated
herein. The "Document", below, refers to any such manual or work. Any member of the public is a
licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work
in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it,
either copied verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals
exclusively with the relationship of the publishers or authors of the Document to the Document's
overall subject (or to related matters) and contains nothing that could fall directly within that overall
subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not
explain any mathematics.) The relationship could be a matter of historical connection with the subject
or with related matters, or of legal, commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of
Invariant Sections, in the notice that says that the Document is released under this License. If a section
does not fit the above definition of Secondary then it is not allowed to be designated as Invariant.
The Document may contain zero Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or
Back-Cover Texts, in the notice that says that the Document is released under this License. A
Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format
whose specification is available to the general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of pixels) generic paint programs
or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters
or for automatic translation to a variety of formats suitable for input to text formatters. A copy made
in an otherwise Transparent file format whose markup, or absence of markup, has been arranged
to thwart or discourage subsequent modification by readers is not Transparent. An image format is
not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called
"Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup,
Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and
standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples
of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary
GNU Free Documentation License
103
formats that can be read and edited only by proprietary word processors, SGML or XML for which
the DTD and/or processing tools are not generally available, and the machine-generated HTML,
PostScript or PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are
needed to hold, legibly, the material this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means the text near the most prominent
appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely
XYZ or contains XYZ in parentheses following text that translates XYZ in another language.
(Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you
modify the Document means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License
applies to the Document. These Warranty Disclaimers are considered to be included by reference in
this License, but only as regards disclaiming warranties: any other implication that these Warranty
Disclaimers may have is void and has no effect on the meaning of this License.
GNU Free Documentation License
104
3. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially,
provided that this License, the copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other conditions whatsoever to
those of this License. You may not use technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept compensation in exchange
for copies. If you distribute a large enough number of copies you must also follow the conditions in
section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display
copies.
GNU Free Documentation License
105
4. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the
Document, numbering more than 100, and the Document's license notice requires Cover Texts, you
must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover
Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly
and legibly identify you as the publisher of these copies. The front cover must present the full title
with all words of the title equally prominent and visible. You may add other material on the covers
in addition. Copying with changes limited to the covers, as long as they preserve the title of the
Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones
listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must
either include a machine-readable Transparent copy along with each Opaque copy, or state in or
with each Opaque copy a computer-network location from which the general network-using public
has access to download using public-standard network protocols a complete Transparent copy of
the Document, free of added material. If you use the latter option, you must take reasonably prudent
steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent
copy will remain thus accessible at the stated location until at least one year after the last time you
distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an updated
version of the Document.
GNU Free Documentation License
106
5. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections
2 and 3 above, provided that you release the Modified Version under precisely this License, with the
Modified Version filling the role of the Document, thus licensing distribution and modification of
the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the
Modified Version:
GNU FDL Modification Conditions
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and
from those of previous versions (which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version if the original publisher of that
version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the
modifications in the Modified Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five), unless they release you from this
requirement.
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the public permission to
use the Modified Version under the terms of this License, in the form shown in the Addendum
below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in
the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the
title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there
is no section Entitled "History" in the Document, create one stating the title, year, authors, and
publisher of the Document as given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a Transparent
copy of the Document, and likewise the network locations given in the Document for previous
versions it was based on. These may be placed in the "History" section. You may omit a network
location for a work that was published at least four years before the Document itself, or if the
original publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section,
and preserve in the section all the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
GNU Free Documentation License
107
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles.
Section numbers or the equivalent are not considered part of the section titles.
M.Delete any section Entitled "Endorsements". Such a section may not be included in the Modified
Version.
N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any
Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary
Sections and contain no material copied from the Document, you may at your option designate some
or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the
Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of
your Modified Version by various parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as
a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by)
any one entity. If the Document already includes a cover text for the same cover, previously added by
you or by arrangement made by the same entity you are acting on behalf of, you may not add another;
but you may replace the old one, on explicit permission from the previous publisher that added the old
one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their
names for publicity for or to assert or imply endorsement of any Modified Version.
GNU Free Documentation License
108
6. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under the terms
defined in section 4 above for modified versions, provided that you include in the combination all
of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant
Sections of your combined work in its license notice, and that you preserve all their Warranty
Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant
Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same
name but different contents, make the title of each such section unique by adding at the end of it, in
parentheses, the name of the original author or publisher of that section if known, or else a unique
number. Make the same adjustment to the section titles in the list of Invariant Sections in the license
notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original
documents, forming one section Entitled "History"; likewise combine any sections Entitled
"Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled
"Endorsements".
GNU Free Documentation License
109
7. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under this
License, and replace the individual copies of this License in the various documents with a single
copy that is included in the collection, provided that you follow the rules of this License for verbatim
copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this
License, provided you insert a copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that document.
GNU Free Documentation License
110
8. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent documents or
works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights of the compilation's users beyond
what the individual works permit. When the Document is included in an aggregate, this License
does not apply to the other works in the aggregate which are not themselves derivative works of the
Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the
Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the
Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole
aggregate.
GNU Free Documentation License
111
9. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document
under the terms of section 4. Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant Sections. You may include a translation
of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided
that you also include the original English version of this License and the original versions of those
notices and disclaimers. In case of a disagreement between the translation and the original version of
this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the
requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
GNU Free Documentation License
112
10. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for
under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void,
and will automatically terminate your rights under this License. However, parties who have received
copies, or rights, from you under this License will not have their licenses terminated so long as such
parties remain in full compliance.
GNU Free Documentation License
113
11. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation
License from time to time. Such new versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that
a particular numbered version of this License "or any later version" applies to it, you have the option
of following the terms and conditions either of that specified version or of any later version that has
been published (not as a draft) by the Free Software Foundation. If the Document does not specify
a version number of this License, you may choose any version ever published (not as a draft) by the
Free Software Foundation.
GNU Free Documentation License
114
12. ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of the License in the document
and put the following copyright and license notices just after the title page:
Sample Invariant Sections list
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or
modify this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the
license is included in the section entitled "GNU Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts."
line with this:
Sample Invariant Sections list
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts
being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge
those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these
examples in parallel under your choice of free software license, such as the GNU General Public
License, to permit their use in free software.
top related