wiki:GnuLinuxAdminDebian

Ce chapitre fait partie du cours d'aministration de GNU/Linux.

Debian GNU/Linux - Installation et administration

1. Présentation

Debian GNU/Linux est une distribution gérée par une communauté très structurée et constituée de plus d'un millier de développeurs. Plus de 10,000 logiciels sont maintenus dans cette distribution. Elle existe depuis 1993, et est réputée depuis de nombreuses années comme la distribution la plus étendue et la plus robuste pour les déploiements serveur.

Debian n'est pas porté par une structure commerciale particulière, et il s'en suit qu'il n'existe pas de planning strict pour les releases et les mises à jour. Il y a eu presque 3 ans entre les deux versions précédentes de Debian (2.2 et 3.0). Cependant les mises à jour de sécurité sont toujours réactives et suivies; une release est suivie 1 an après son obsolescence par une nouvelle release.

Les releases de Debian ont toutes un nom de code issu du nom d'un personnage du film "Toy Story". Sont sorties dans l'ordre: Buzz, Rex, Bo, Hamm, Slink, Potato, Woody, Sarge (Etch est la prochaine).

Site de référence http://www.debian.org
Téléchargement (CDs/DVDs) http://www.debian.org/CD/http-ftp/
Consulter les paquets http://www.debian.org/distrib/packages
Fil d'infos sécurité http://www.debian.org/security/

Les mises à jour de sécurité sont postées sur la liste debian-security-announce@… avec le préfixe [SECURITY] dans leur objet. Le trafic est de 20 à 50 mails par mois.

2. Installation (1ère partie)

La version stable actuelle de Debian GNU/Linux est la 3.1, dénommée Sarge. On télécharge en général une mise à jour - par exemple la 3.1r2 - qui intègre déjà les derniers correctifs de sécurité.

La méthode la plus simple consiste à télécharger l'ISO du CD numéro 1 de la dernière release. Ce CD contient en général la majorité des logiciels nécessaires à monter un serveur traditionnel. On pourra facilement télécharger les logiciels manquants au cas par cas via le système de packages. Note: il est difficile de mener à bien une installation Debian sans un accès à Internet (possible mais non recommandé).

Lorsque vous démarrez sur le CD numéro 1, vous obtenez un menu. Vous faites alors votre premier choix:

Version du noyau

Debian peut être installée avec deux types de noyaux différents :

  • Linux 2.4 : noyau par défaut
  • Linux 2.6 : taper 'propose un support matériel différent (parfois plus avancé et aussi moins complet), à n'utiliser que si nécessaire

Une fois le noyau choisi, vous voyez Linux - le noyau - démarrer (reconaissable à ses messages d'info qui défilent). L'installeur propremment dit démarre alors (gris sur fond bleu).

Language (langue)

Il est fortement recommandé d'utiliser l'anglais, car les recherches sur Internet sont beaucoup plus pertinentes dans cette langue. De plus, les traductions françaises laissent parfois à désirer (le français sans anglicisme se prête mal au langage informatique). Rien ne vous empêchera d'installer des langues supplémentaires par la suite si vous le désirez.

Country (pays)

Choisissez Europe, puis France (tapez F pour aller plus vite). Ceci servira à définir votre fuseau horaire en particulier.

Keymap (clavier)

Choisissez French pour un clavier AZERTY standard (102 ou 105 touches).

Hostname (nom de machine)

Après la phase de détection du matériel (disques, réseau, etc), l'installeur va se charger et vous demander un nom de machine. Ce nom n'est pas nécessairement lié au nom réseau, il est d'ailleurs recommandé de ne pas utiliser le caractère point. Choisissez un nom significatif, il sera en particulier utile pour gérer votre machine à distance. Exemple: serveur-fichier-prod.

Domain name (nom de domaine)

Ceci est par contre lié à votre configuration réseau. Si vous contrôlez par exemple la zone DNS mon-entreprise.com et que vous pouvez déclarer un enregistrement (A ou CNAME) pour serveur-fichier-1.mon-entreprise.com, alors choisissez ce nom de domaine. Dans tous les autres cas (pas d'interaction avec le DNS), ce paramètre aura peu d'incidence.

Partition disks (partitionnement)

Il est recommandé d'utiliser le partitionnement manuel, de savoir quel va être l'usage précis de la machine, et de connaître ces informations pratiques :

  • /: partition racine, va stocker les logiciels et la configuration système. Il faut très rarement plus de 1GB (un giga-octets) pour l'ensemble des applications classiques. Si vous avez des applications non-Debian à déployer, prévoyez de la place en plus pour celles-ci
  • swap: la partition de swap est obligatoire, elle permet aux logiciels de fonctionner normalement si la mémoire vive est entièrement utilisée (avec une vitesse bien moindre). Sans swap et en cas d'utilisation de toute la mémoire vive, Linux "tuera" des processus plus ou moins au hasard pour maintenir le système à flot - peu désirable. Le principe consiste à allouer deux fois la taille de la mémoire vive disponible (ex: 512MB de RAM, swap de 1GB).
  • /var: la plupart des données des applications sont stockées ici. On y trouve les base de données (LDAP, MySQL, etc), les spools (mails, file d'impression, etc), les backups, les caches, les logs et les sites webs.
  • /srv: cette partition est souvent créée pour les serveurs de fichiers

Le principe des partitions consiste à isoler des parties du système:

  • la corruption d'une partition n'entraîne en général pas celle de sa voisine
  • une partition peut être remplie (typiquement /srv par les utilisateurs d'un serveur de fichiers) sans gêner les autres partitions

De manière générale, il est important de bien séparer les données dont on contrôle le volume (logs, backups, caches) des données que les utilisateurs contrôlent (spools, mails, fichiers). Il existe des mécanismes de quota, mais un bon partitionnement garantit dès le début une robustesse sans faille.

Note sur les systèmes de fichiers: à moins de cas extrêmes (serveurs très chargés, applications très spécifiques), le système de fichier ext3 (par défaut) convient à toutes les situations. Il est journalisé (reboot rapide en cas de coupure violente) et très stable. Il existe également de nombreux outils de dépannage compatibles ext3 en cas de problèmes (ce qui est rarement vrai pour reiserfs ou XFS).

GRUB (boot loader)

On vous propose d'installer GRUB sur le master boot record. En d'autres termes, un démarreur de système va s'installer au début du disque et être configuré pour lancer Debian par défaut (nous verrons qu'il est configurable et permet de choisir ses noyaux par la suite). Acceptez avec Yes.

On vous propose alors de redémarrer l'ordinateur en ayant retiré le CD-ROM du lecteur auparavant.

3. Installation (2ème partie)

Vous démarrez désormais sur votre Debian fraîchement installée sur votre disque dur. Il va valloir encore répondre à quelques questions pour la configurer complètement (mais vous n'aurez plus besoin de rebooter).

Hardware clock (Horloge RTC)

Il est recommandé de synchroniser l'horloge RTC (celle sauvegardée par pile lorsque la machine est éteinte) avec le temps universel (GMT) care celui-ci ne dépent pas des décalages horaires. Debian saura parfaitement gérer ces décalages horaires au niveau système (software clock), voir plus loin. Répondez Yes (quelle que soit l'heure enregistrée dans votre horloge RTC).

Time zone (fuseau horaire)

Vous êtes dans la zone Europe/Paris? (c.a.d. GMT+2 en été, GMT+1 en hiver).

Root password

Choisissez le mot de passe administrateur (compte root sous Unix). En général ce mot de passe n'est utilisé que pour la console locale (écran/clavier) dont l'accès est souvent restreint (baie verouillée, accès badgé, etc). Il existe un mécanisme plus sûr que le mot de passe pour les accès à distance (voir SSH et les clés publiques).

User account

Il est fortement recommandé de créer un compte utilisateur standard. Celui-ci n'aura aucun privilège particulier, et sera particulièrement utile pour s'exercer, tester - y compris une fois que l'on est entraîné. Il vous est demandé dans l'ordre:

  • un nom complet (ex: Vincent Caron)
  • un login (ex: vincent - attention, sensible à la casse, minuscules fortement recommandées)
  • un mot de passe

Apt configuration

Il s'agit de choisir la source principale où les logiciels doivent être puisés. Nous allons utiliser le CD-ROM:

  • Mthod: choissez CDROM
  • Device: choisissez /dev/cdrom après avoir ré-inséré le CD numéro 1
  • Scan another CD: choisissez No

A partir de ce moment, l'installeur va automatiquement vérifier sur Internet s'il n'existe pas de mise à jour de sécurité plus récentes que le CD, et les télécharger le cas échéant. Vous êtes ainsi sûr de toujours installer un système sécurisé par défaut.

Software selection

Vous devez alors sélectionner les logiciels à installer. Suivez les recommandations suivantes:

  • Ne choisissez pas la sélection Desktop environment pour un serveur de production. Un bureau graphique est inutile pour la gestion du serveur, le surcharge inutilement (200 à 300Mo de RAM) et va doubler ou tripler le nombre de logiciels installés en faisant baisser d'autant votre niveau de fiabilité et de sécurité.
  • Choisissez les options généralistes (Web server, DNS server) si vous n'êtes pas familier avec les logiciels serveur classiques (Apache, Bind, etc). Sinon ne cochez rien, vous pourrez faire une sélection manuelle beaucoup plus pertinente par la suite.
  • Préférez reporter à plus tard l'installation des logiciels en ne sélectionnant pas manuel package selection. Vous pourrez plus facilement installer et configurer les logiciels un par un après coup.

Pour l'illustration de ce cours, nous recommandons de ne sélectionner aucun logiciel, afin de comprendre comment est consituté un système Debian minimaliste, et comment installer des composants supplémentaires.

4. Gestion des paquets

Comme toute distribution moderne, Debian utilise une gestion centralisée de ses logiciels, regroupés dans ce que l'on appelle des dépôts (repositories). Pour installer des composants logiciels, il suffit de désigner une fois pour toute un dépôt officiel, puis d'utiliser le gestionnaire de paquets appelé APT pour faire son marché.

L'utilisation de logiciels tiers ne faisant pas partie du dépôt Debian va requérir plus d'efforts et de précautions (sécurité, fiabilité, maintenance), elle est à éviter autant que possible.

Les sources

APT peut consulter plusieurs dépôts simultanément. Traditionnellement, on utilise les CD-ROM pendant les phases d'installation, puis un dépôt distant (FTP ou HTTP) pendant la phase de maintenance. Ces sources sont énumérées dans le fichier /etc/apt/sources.list. Exemple:

deb http://ftp.fr.debian.org/debian sarge         main
deb http://security.debian.org      sarge/updates main

On déduit de ce fichier les informations suivantes:

  • le serveur est configuré pour aller chercher et suivre les mises à jour de la version stable Sarge (Debian 3.1)
  • un mirroir français est utilisé pour le dépôt principal, avec le protocole HTTP (première ligne)
  • le serveur de sécurité officiel Debian est utilisé pour les mises à jour de sécurité
  • seule la section main du dépôt est utilisée (autres sections: contrib, non-free)

Pour les détails de configuration, utiliser la documentation dans man apt-get. Par exemple pour configurer un proxy HTTP, on créée le fichier de configuration /etc/apt/apt.conf.d/proxy avec:

Acquire::http::Proxy "http://proxy.company.com:8080";

Mises à jour

La méthode recommandée depuis Debian Sarge est d'utiliser le logiciel aptitude. Il y a plusieurs distinctes lors de la mise à jour:

  • récupération de la liste des dernières mises à jour disponibles: appuyez sur U
  • application de toutes les mises à jour disponibles: appuyez sur u, puis g consultez et vérifiez, rappuyez sur g pour lancer la mise ) jour
  • aptitude va alors télécharger les mises à jour et les installer, et poser des questions si nécessaires

Note: vous pouvez obtenir la même chose en ligne de commande avec:

# aptitude update && aptitude dist-upgrade

Configuration des paquets

Lors de l'installation de paquets, il se peut qu'APT vous pose des questions pour vous aider à les pré-configurer. Parfois ces questions vous seront posées à nouveau lors de mises à jour, mais les champs seront pré-remplis par vos réponses précédentes. Sachez que vous pouvez à tout moment redemander la configuration d'un paquet, par exemple:

# dpkg-reconfigure apache2

Debian traite les fichiers de configuration d'une manière précautionneuse, car il y a de fortes chances que vous ayez modifié ceci depuis la dernière installation, mais qu'une mise à jour (nouvelle syntaxe, nouvelles directives, etc) s'impose. Dans le cas d'une mise à jour de fichier de configuration, Debian vous propose toujours 3 choix:

  1. Garder votre configuration actuelle: a priori l'option la plus sûre, mais parfois la mise à jour sous-jacente du logicielle peut rendre votre configuration inopérante
  2. Ecraser votre configuration avec une nouvelle, générique: rarement souhaitable, sauf si vous n'utilisez pas le paquet
  3. Comparer votre configuration avec la nouvelle proposée (diff) et faire votre choix en conséquence

Dans les cas 1 et 3, le nouveau fichier de configuration sera enregistré avec le préfixe .dpkg-new (exemple: /etc/samba/smb.conf.dpkg-new). Enfin, si vous choisissez d'écraser un fichier de configuration avec un nouveau, APT en fera une sauvegarde pour vous s'il a été détecté que vous aviez éditer ce fichier.

Consultation des paquets installés

Vous pouvez obtenir à tout moment une liste des paquets installés avec la commande dpkg -l:

# dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                             Version                      Description
+++-================================-============================-============================================
ii  acpi                             0.09-1                       displays information on ACPI devices
ii  acpid                            1.0.4-5                      Utilities for using ACPI power management
ii  adduser                          3.96                         Add and remove users and groups
...

Il est possible d'obtenir de restreindre la liste à un paquet ou un groupe de paquets en précisant son nom, avec des jokers éventuels. Exemple: dpkg -l 'libapache*-mod* pour trouver les modules Apache.

On peut également remonter d'un fichier particulier jusqu'au paquet auquel il appartient. Par exemple si on veut savoir à quel paquet appartient le programme ls:

# dpkg -S /bin/ls
coreutils: /bin/ls

Rechercher un paquet à installer

Debian possède toujours une copie locale des informations concernant les paquets disponibles via ses sources. On peut la consulter avec apt-cache search et le même principe de joker que dpkg -l. La recherche est effectuée dans les noms des paquets et leurs descriptifs. Exemple:

# apt-cache search libapache*-mod*
libapache-mod-php4 - server-side, HTML-embedded scripting language (apache 1.3 module)
libapache-mod-php5 - server-side, HTML-embedded scripting language (apache 1.3 module)
libapache-mod-python - An Apache module that embeds Python within the server
...

Enfin on obtient les informations détaillées sur un paquet avec apt-cache show:

# apt-cache show libapache2-mod-php4
Package: libapache2-mod-php4
Priority: optional
Section: web
Installed-Size: 3144
Maintainer: Adam Conrad <adconrad@0c3.net>
Architecture: i386
...

Installer des paquets

Une fois que vous avez identifié les paquets dont vous avez besoin, vous pouvez les installer en les désignant avec la commande aptitude install ... ou simplement avec le frontend interactif aptitude. Vous gagnerez du temps en installant dans un même lot plusieurs programmes liés. Exemple pour installer Apache+PHP+MySQL:

# aptitude install apache2 libapache2-mod-php4 php4-mysql mysql-server

APT va vous présenter la liste complète de paquets nécessaires à l'installation complète de votre demande (les dépendances), une estimation du nouvel espace disque utilisé. Il ne vous reste plus qu'à confirmer ou annuler.

Désinstaller des paquets

Il est tout aussi simple de désinstaller un paquet. Par défaut, APT efface uniquement les fichiers du programme, et garde les fichiers de configuration en place. Ainsi, si vous réinstallez le paquet par la suite, il reprendra la dernière configuration utilisée. Exemple:

# aptitude remove apache2

5. Spécificités Debian

Chaque distribution propose un jeu cohérent de scripts (ou wrappers) permettant d'automatiser certaines tâches, une certaine façon d'organiser les fichiers de configuration et un état d'esprit général qu'il est en général utile et fortemment recommandé de suivre. Les informations suivantes visent à compléter les informations génériques, par exemple sur la configuration d'un serveur Apache, afin de bien adapter ses connaissances à l'environnement de Debian.

Configuration réseau

La configuration des interfaces s'effectue à l'aide du fichier /etc/network/interfaces. Celui-ci doit toujours contenir la définition de l'interface loopback. Exemple avec eth0 en DHCP et eth1 en statique:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
  address 192.168.1.1
  netmask 255.255.255.0
  gateway 192.168.10.254

La configuration du DNS est dans /etc/resolv.conf (comme tout Unix). Exemple:

search company.com
nameserver 212.27.53.252
nameserver 212.27.54.252

Démarrage des services

Le contrôle du démarrage des services au boot est assuré par le système classique de liens symboliques dans /etc/rcN.d/. Comme ces liens sont pénibles à maintenir, on utilise un wrapper pour ce faire:

# update-rc.d -f apache2 remove

Attention, lors d'une mise à jour, un service désactivé de cette façon peut être automatiquement réactivé. La façon correcte de désactiver de manière durable un service, est soit de le désinstaller (rappelez-vous que Debian garde soigneusement votre configuration), soit d'utiliser une variable prévue à cet effet dans /etc/default/<nom du service> (si elle existe).

Configuration des services

De nombreux services (y compris la séquence de boot elle-même) peuvent être configurés de manière avancée via des fichiers périphériques dans /etc/default/<nom du service>. Ces fichiers sont toujours documentés. Par exemple, dans /etc/defaults/rcS il peut être utile de rendre automatique la réparation de système de fichiers en cas de problème détecté:

# Set FSCKFIX to "yes" if you want to add "-y" to the fsck at startup.
FSCKFIX=yes

Il est également très utile d'activer l'enregistreur de bootlog, afin d'obtenir à chaque boot une trace précise de ce qui s'est passé au démarrage dans /var/log/boot.log (et d'en garder un historique). Il suffit de modifier le fichier /etc/default/bootlogd:

# Run bootlogd at startup ?
BOOTLOGD_ENABLE=yes

Superdémon (inetd/xinetd)

Le superdémon est utilisé par certains services pour assurer leur gestion réseau. Pour simplifier la configuration de ce service, il existe un wrapper utile. Par exemple, pour désactiver le service controversé ident:

# update-inetd --disable ident

Apache

La structure de configuration d'Apache2 a été éclatée en plusieurs fichiers, chacun rangé dans un répertoire dédié à une tâche précise. Ceci améliore grandement l'interaction avec les scripts d'installation qui activent et configurent des modules pour vous (entre autres). La structure encourage également à utiliser une façon saine de configurer un serveur Apache "chargé" !

/etc/apache2/apache2.conf Fichier de configuration de base, ne pas toucher
/etc/apache2/ports.conf Pour écouter sur des ports autre que 80 (ex: 443 pour HTTPS)
/etc/apache2/envvars Environnement Apache (ex: ORACLE_HOME, TNS_ADMIN, etc.)
/etc/apache2/conf.d Configuration globales des applications web
/etc/apache2/mods-available Modules disponibles (activation et configuration)
/etc/apache2/mods-enabled Modules activés (activation et configuration)
/etc/apache2/sites-available Sites disponibles/configurés
/etc/apache2/sites-enabled Sites activés

Un site (en général un virtualhost) est configuré dans un fichier dédié et numéroté, par exemple /etc/apache2/sites-available/000-mycompany.com. Il suffit alors de créer un lien du même nom dans /etc/apache2/sites-enabled pour signifier que ce site doit être activé (et prévenir Apache). La numérotation sert à ordonner les sites, sachant que le virtualhost par défaut est le premier déclaré.

Pour gérer l'activation et la configuration des modules, il existe des scripts qui simplifient tout:

# a2enmod php4
# a2dismod php4
Last modified 14 years ago Last modified on Sep 3, 2006, 1:25:28 AM