LinuxLignes Alternatives - index

Linux par l'exemple

Version 1.0.8 du 07/11/1999
Auteur : Jean-Marc B

Qui n'a pas au moins une fois, lors du paramétrage de certains programmes Linux, regretté de ne pas avoir un exemple sous la main? C'est fort de cette constatation que j'ai décidé de tenter d'apporter une solution à ce problème à travers cette modeste contribution.

Sommaire

Avant propos

    1. INSTALLATION
        1.1 Partitionnement
        1.2 Packages
        1.3 Réseau et carte
        1.4 XWindow
        1.5 Daemons
        1.6 Lilo

    2. COMPLEMENTS D'INSTALLATION
        2.1 Configuration du réseau
        2.2 Recompilation du noyau / Lilo
        2.3 PCMCIA
        2.4 Langue
        2.5 Son
        2.6 Système RAID

    3. SERVICES INTRANET
        3.1 DNS (bind 8.2.2)
        3.2 HTTP (apache 1.3.9)
        3.3 FTP (wu-ftpd 2.6.0)
        3.4 IRC (ircd 2.9.32)
        3.5 News (inn 2.2)
        3.6 Mail (sendmail 8.9.3)
        3.7 Gestion de comptes mail (fetchmail 5.0.3)
        3.8 Liaisons netbios (samba 2.0.5a)
        3.9 Indexation/recherche Web (htdig 3.1.3)
        3.10 Partage d'agendas (webcal 1.11)

Avant propos

L'installation et les paramétrages ci-après décrits, ont été fait (à l'origine) à partir d'une distribution RedHat 5.0. Néanmoins, moyennant quelques modifications (au niveau de l'emplacement des fichiers surtout), la partie configuration reste valable pour n'importe quelle distribution. La machine est un serveur intranet mais j'ai ajouté dans certains cas des remarques particulières à l'utilisation avec un portable (paramétrages X en particulier). Cette documentation peut donc aussi vous guider lors de l'installation de Linux sur un portable IBM ThinkPad 380Z.

Remarques:

  • Cet unique serveur intranet sera utilisé pour offrir tous les services décrits ci-après d'où l'utilisation constante de l'adresse 55.134.16.33. Pensez à modifier ce paramètre si vous utilisez des serveurs dédiés pour tel ou tel service.
  • Ce n'est pas un guide d'installation mais une aide au paramétrage. Les réglages faits ne sont pas très avancés ni très complexes mais constituent juste des indications et des trucs sur ce dont nous avions besoin. Ce document est donc plutôt destiné aux amateurs éclairés (moins aux débutants ou aux gourous).

1. INSTALLATION

1.1 Partitionnement

Le partitionnement se fait avec Disk Druid (un outil assez convivial) ou bien FDisk (un peu plus spartiate, mais présent sur de nombreuses distributions). J'ai créé les partitions suivantes sur un disque de 6 Go:

/       de 100 Mo, la racine,                           montée en /dev/hda1
/var    de 2 Go,   pour les impressions et le courrier, montée en /dev/hda5
/ftpd   de 1 Go,   la zone FTP,                         montée en /dev/hda6
/httpd  de 1 Go,   la zone Web,                         montée en /dev/hda7
/usr    de 600 Mo, la zone des programmes,              montée en /dev/hda8
/home   de 400 Mo, les répertoires utilisateurs,        montée en /dev/hda9
/tmp    de 200 Mo, pour les fichiers temporaires,       montée en /dev/hda10

Par ailleurs, une partition de swap de 100 Mo a été créée. Il est d'usage de faire un swap d'environ 2 fois la taille de la RAM.

Remarques:

  • Les noms de partitions (hdxx) n'ont pas d'importance et ne sont indiqués que pour information.
  • Il reste près de 1 Go disponibles pour pouvoir créer une nouvelle partition (ou plusieurs). Via l'utilisation des liens (commande ln), il sera également possible de lier un sous répertoire d'une partition saturée vers une nouvelle partition afin de l'étendre.
  • Ce montage a été fait pour des raisons de sécurité, la machine étant destinée à devenir un serveur intranet: ainsi, en cas de saturation d'une partition, seul le service qui l'utilise sera touché. Pour l'installation sur le portable, je me suis contenté des partitions /, /home, /tmp, /usr et /var (un partitionnement propre est toujours utile).
  • Les points de montage /httpd et /ftpd peuvent être remplacés respectivement par /home/httpd et /home/ftp (les répertoires par défaut du web et du ftp). Je préférais les avoir sur la racine.
  • 600 Mo pour les programmes (/usr), c'est beaucoup et cela peut être réduit sans problème à 200 Mo ou 300 Mo dans le cas d'un serveur. Cependant, je préférais être au large.
  • Il y a seulement 400 Mo pour les utilisateurs (/home) car très peu seront amenés à avoir accès à autre chose qu'aux services classiques (web, ftp, mail).

1.2 Packages

Si l'on n'est pas sûr de ses besoins, que l'on a un disque dur de taille suffisante et partitionné correctement, on peut installer tous les packages, ainsi on est sûr d'avoir tous les outils nécessaires. Par la suite, les packages qui s'avèreront inutiles peuvent être désinstallés sans aucun problème (par rpm -e). Bien entendu, cette solution de facilité n'est à utiliser que si l'on ne connait pas bien le contenu du CD-ROM et ce dont on a besoin. Une sélection plus rigoureuse et limitée sera toujours meilleure et permettra de réduire d'autant la partition /usr.

1.3 Réseau et carte

La carte réseau utilisée était une Intel EtherExpress Pro. Je n'ai pas pu utiliser la détection automatique qui ne fonctionne pas avec elle. Lorsque le programme demande les paramètres, il faut indiquer io=0x300 irq=10 (la carte a été paramétrée et le PnP désactivé sous DOS auparavant).

Cela va charger le module de la carte Intel au boot et lui permettre de fonctionner. C'est le fichier /etc/conf.modules qui sera modifié comme suit:

alias eth0 eepro
options eepro io=0x300 irq=10

Pour la configuration réseau, j'ai pris l'adresse 55.134.16.33, le subnet mask 255.255.240.0, la passerelle par défaut 55.134.16.9 et le DNS 127.0.0.1 (c'est en accord avec l'adressage général de l'entreprise). L'hôte sera localhost.localdomain et le domaine localdomain (valeurs par défaut).

Remarques:

  • Le pilote d'origine de la carte réseau (livré avec la RedHat) ne fonctionnait pas avec la nôtre. J'ai donc dû utiliser 127.0.0.1 (c'est-à-dire la machine elle-même) comme DNS, afin d'éviter les problèmes au boot.
  • Pour la même raison, j'ai conservé les valeurs par défaut pour le nom de domaine et l'hôte car sinon cela poserait un problème au démarrage des services sendmail (email) et samba (réseaux Windows): en effet, ils n'aiment pas ne pas connaître leur hôte (correspondance nom-adresse IP).
  • Si votre serveur DNS est déjà opérationnel (et que la carte réseau fonctionne), n'hésitez pas à donner l'adresse du DNS exacte et les noms d'hôte et de domaine corrects.
  • Pour le portable, j'ai configuré le réseau et la carte PCMCIA ethernet/modem plus tard (voir configuration du réseau, recompilation du noyau).

1.4 XWindow

Il faut ensuite installer XFree86. Xconfigurator a détecté chaque fois correctement la carte graphique. Ensuite, j'ai utilisé le moniteur Spécial; puis choisi Super VGA étendu, 800x600 à 60 Hz et la plage de fréquence 50-70 (c'était un 15 pouces, SVGA, pour lequel je n'avais pas d'autres caractéristiques). Le test fut ok (cela fonctionne la plupart du temps avec un moniteur 15'' classique, mais en cas de doûte consultez votre notice).

Ensuite, j'ai préféré choisir moi-même la définition et le nombre de couleurs: ce sera 800x600 16 bits.

Remarques:

  • En fait, XFree n'est pas du tout indispensable pour un serveur intranet mais cela donne accès à des outils graphiques pas forcément inutiles.
  • La carte graphique du portable n'est pas détectée. C'est une NeoMagic 256 AV. En prenant le driver NeoMagic 128 series, ça fonctionnera parfaitement.
  • L'écran du portable est un écran LCD 1024x768. Les tests seront concluants. La résolution finale sera 1024x768 16 bits (l'écran de cet IBM est excellent).

1.5 Daemons

Un certain nombre de daemons (services) sont proposés en démarrage automatique par la RedHat. En cas de doute, il vaut mieux ne rien changer à ce niveau pour le moment. Sinon, il faut savoir que dans le cadre d'un serveur, on peut lancer (non exhaustif): atd (exécutions différées), crond (exécutions automatiques), inetd, httpd (serveur web), network, random, smb (liaison avec des postes clients Windows).

Remarque: pour le portable, on peut ajouter apmd (gestion de la batterie; c'est facultatif la gestion BIOS étant suffisante) et pcmcia (pour les ports du même nom).

1.6 Lilo (Linux Loader)

Le chargeur a été installé sur le bloc de démarrage (Master Boot Record) du premier disque. Dans ce cas, on est sûr que quel que soit le BIOS, ça fonctionnera. Les autres possibilités peuvent poser des problèmes dans certains cas. Par ailleurs, une disquette de boot d'urgence a été créée pour éviter d'être bloqué en cas de problème avec lilo ou le disque dur.

Remarques:

  • La disquette de boot d'urgence peut être créée après installation par la commande mkbootdisk --device /dev/fd0 2.0.36 (dépend du numéro de version de votre noyau).
  • Si lilo se retrouve endommagé, vous pouvez le restaurer en relançant le CD-ROM de la RedHat puis en demandant la mise à jour. Vous choisissez alors de mettre à jour un package sans importance (un HOWTO quelconque) et il vous proposera, à la fin, de réinstaller lilo. C'est assez bestial mais ça fonctionne.


2. COMPLEMENTS D'INSTALLATION

Après le premier démarrage, il va falloir faire quelques modifications pour avoir un système complet (serveur comme portable) et en particulier compiler un nouveau noyau (il est toujours bon de faire un noyau règlé et compilé pour sa machine).

Pour commencer, je conseille de travailler dans un shell sous XWindow (lancement par la commande startx, puis ouverture d'un terminal): le shell est plus large, on a accès à des utilitaires plus conviviaux et en prime, c'est plus joli.

Remarque: attention au verrouillage du pavé numérique qui peut gèner la manipulation des fenêtres sous X: sous fvwm, il empêche l'accès aux menus et gadgets des fenêtres.

Avant toute chose, afin de prévenir des problèmes lors de l'installation de nouveau packages, il vaut mieux conserver une trace de l'installation originale par la commande rpm -qa >/root/liste_install. Le fichier en question contiendra la liste des packages installés et leur version. Toute modification sur les packages devrait être ajoutée à cette liste afin d'avoir un bon suivi des ajouts/suppressions/mises à jour et ainsi pouvoir les annuler sans dommage. Le système rpm gère une base de données de ce qui est installé (très complète) mais il ne fait pas d'historique d'où l'intérêt de ce fichier pour se souvenir de "ce qui a été".

2.1 Configuration du réseau

Le nom d'hôte est zeus.olympe (notre serveur est zeus, logique non?) et le domaine olympe. Routage: la passerelle est en 55.134.16.9 et utilise le device eth0.

Le fichier /etc/sysconfig/network doit contenir:

NETWORKING=yes
FORWARD_IPV4=no
HOSTNAME=zeus.olympe
DOMAINNAME=olympe
GATEWAY=55.134.16.9
GATEWAYDEV=eth0

Les hôtes (fichier /etc/hosts) sont:

127.0.0.1       localhost
55.134.16.33    zeus

Si ça n'a pas été fait à l'installation (c'est le cas du portable), il faut également paramètrer la carte réseau en éditant les caractéristiques de eth0. L'adresse est 55.134.16.33 et le subnet mask 255.255.240.0. Par ailleurs, j'ai demandé à ce que l'inferface soit activée au boot et que les utilisateurs ne puissent pas la désactiver. Enfin, aucun protocole n'est utilisé.

Tout cela donnera le fichier de configuration de l'interface /etc/sysconfig/network-scripts/ifcfg-eth0 suivant:

DEVICE=eth0
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
BROADCAST=55.134.31.255
NETWORK=55.134.16.0
NETMASK=255.255.240.0
IPADDR=55.134.16.33

Remarques:

  • Cette configuration peut se faire directement ou depuis le Control-panel sous X.
  • Pour les habitués de Microsoft: les modifications de configuration du réseau sont immédiatement prises en compte (inutile de rebooter).
  • Pour avoir une configuration complète, il faut indiquer le domaine de recherche des noms d'hôtes (olympe) et le serveur DNS (55.134.16.33). Voir le chapitre DNS pour plus de précisions à ce sujet.
  • La configuration reste valable pour la carte PCMCIA. Il suffit que cette dernière soit bien reconnue (j'ai dû d'abord recompiler).

2.2 Recompilation du noyau / Lilo

Pour plus d'information à ce sujet, consulter le Manuel de l'utilisateur RedHat, Configuration post-installation, le KERNEL-HOWTO ou le PCMCIA-HOWTO.

C'est une opération indispensable pour au moins trois raisons dans notre cas:
-faire un noyau spécifique Pentium,
-changer et recompiler le pilote de notre carte Intel qui ne fonctionne pas avec celui d'origine,
-optimiser le reste du noyau et les modules (en particulier pour le PCMCIA).

Le nouveau pilote de la carte réseau Intel (eepro.c) doit être copié dans le répertoire /usr/src/linux/drivers/net.

Pour commencer, il faut se placer dans le répertoire /usr/src/linux. Ensuite, il faudra choisir les paramètres du noyau. Pour cela, il suffit d'exécuter make xconfig sous X ou make menuconfig sous terminal (pour créer le fichier /usr/src/linux/.config). Les paramètres par défaut sont assez bons, néanmoins voici quelques exemples de modifications/optimisations possibles en fonction de vos besoins (ces indications ne vous dispensent pas de cliquer sur le bouton Help des lignes qui vous posent problème):

Loadable module support

Enable loadable module support -> Y (un noyau modulaire, c'est mieux)
General setup
processor type=pentium (à règler en fontion de votre proc)
Floppy, IDE, and other block devices
Include IDE/ATAPI TAPE support -> N (sauf si vous avez un Ditto?... je crois)
Include IDE/ATAPI FLOPPY support -> N (sauf si vous avez un Zip IDE)
Support removable IDE interfaces (PCMCIA) -> N (rare! j'ai mis non même sur le portable)
Network device support (désactiver les cartes/types de cartes inutiles)
Pocket and portable adaptors -> N (même sur le portable car je n'ai pas une des cartes listées)
Token Ring driver support -> N (généralement inutile)
ARCnet support -> N (idem)
ISDN subsystem
ISDN support -> N (si on n'est pas en numérique)
CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
Support non-SCSI/IDE/ATAPI CDROM drives -> N
Character devices (désactiver ce qui est inutile)
Stallion multiport serial support -> N (par exemple; rarement utilisé)
Sound
Sound card support -> N (pas de carte son)

Remarques (portable):

  • Le portable a plusieurs problèmes avec la gestion de l'énergie (APM) et il faudra encore modifier cela:

    General setup
    APM BIOS Support -> Y
    Ignore multiple suspend -> Y
    Allow interrupts during APM BIOS calls -> Y
  • Le portable a une carte son: il sera intéressant d'activer le support de sons (voir chapitre son).
  • Penser à recompiler les drivers PCMCIA si vous utilisez ou pensez utiliser de telles cartes (voir chapitre PCMCIA).

Ensuite, vous pouvez éventuellement éditer /usr/src/linux/Makefile pour modifier la ligne EXTRAVERSION de votre noyau (en -?perso par exemple): ainsi ce ne sera plus le noyau 2.0.36-3 mais le 2.0.36-4perso par exemple.

Après ces opérations préparatoires, il faut lancer un make dep (pour gérer les dépendances entre modules) puis un make clean (pour nettoyer un peu). Ensuite vient la compilation du noyau par make boot (make bzImage pour les noyaux 2.2.x car ils sont trop gros et la commande classique finit sur une erreur) puis celle des modules par make modules.

Avant d'installer ces derniers, il vaut mieux conserver les anciens. Si votre noyau est le 2.0.36, ils se trouvent dans le répertoire /lib/modules/2.0.36, qu'il suffit de renommer. Ensuite, on peut lancer make modules_install qui recréera un répertoire 2.0.36 avec les nouveaux modules. Si vous avez pris la peine de modifier le Makefile, l'installation se fera automatiquement dans un nouveau répertoire.

Le nouveau noyau se trouve en /usr/src/linux/arch/i386/boot et s'appelle zImage ou bzImage. L'ancien se trouve en /boot et s'appelle vmlinuz (généralement). Pour des raisons de sécurité, il vaut mieux conserver l'ancien (sous vmlinuz.old) avant de copier le nouveau dans /boot sous vmlinuz. Vous pourrez également copier le nouveau fichier System.map de /usr/src/linux vers /boot.

Après cela, il faudra modifier le fichier /etc/lilo.conf qui défini les conditions du boot, puis lancer lilo après cette modification. Le fichier a la structure suivante:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50

image=/boot/vmlinuz
        label=linux
        root=/dev/hda1
        read-only

On rajoutera les lignes suivantes pour notre cas (ou pour ajouter de nouveaux noyaux):

image=/boot/vmlinuz.old
        label=old
        root=/dev/hda1
        read-only

Ne pas oublier de lancer la commande lilo. Ainsi au boot, en tapant old vous pourrez démarrer sur votre ancien noyau qui fonctionnait parfaitement dans le cas où le nouveau serait défectueux.

Remarque: le BIOS du portable ne permet pas que toute la mémoire soit reconnue si vous avez plus de 64 Mo. Dans ce cas, vous devrez ajouter une ligne append="mem=xxM" dans lilo.conf.

2.3 PCMCIA

Après avoir fait un noyau tout neuf, il faut également recompiler les modules PCMCIA avant de se servir de notre portable. Version des packages utilisés: 3.1.0.

Il faut se placer dans le répertoire /usr/src/linux/pcmcia-cs-x.x.x et commencer par la commande make config. Il faudra alors répondre aux questions posées: le répertoire source de Linux est /usr/src/linux et le répertoire d'install peut être / si on veut installer au bon endroit immédiatement ou /tmp (ou tout autre) si on veut faire des vérifications avant installation. Toutes les autres options proposées par défaut sont bonnes.

Il suffit alors de faire make all puis make install pour les modules PCMCIA soient recompilés et installés. Le répertoire des modules /lib/modules/2.0.36 devrait alors contenir un sous-répertoire pcmcia.

Pour de plus amples informations, consultez le PCMCIA-HOWTO.

2.4 Langue

Par défaut, suivant la version de la RedHat que vous avez, il se peut que vous ayez des problèmes avec l'affichage des caractères accentués. Pour résoudre ce problème, il suffit de créer un fichier /etc/sysconfig/i18n qui sera lu lors du démarrage. Il doit contenir:

LANG=fr
LINGUAS=fr
SYSFONT=lat1-16
SYSTERM=linux-lat

Il sera éventuellement nécessaire d'exécuter la commande setfont lat1-16 pour que la console soit mise à jour. Pour résoudre d'autres problèmes, vous pouvez consulter le French-HOWTO.

2.5 Son

Ce n'est pas vraiment une utilisation serveur mais ça peut être agréable. Avant tout, il faut avoir pensé à activer le son dans le noyau avant de le recompiler. Il faut également choisir la bonne carte son et la compiler (plutôt sous forme de module mais vous pouvez aussi l'inclure au noyau).

La carte du portable n'est pas détectée par Linux. Il s'agit d'une Crystal audio controller CS-4236. Vous pouvez lancer sndconfig pour tout installer. Au préalable, j'ai dû aller faire un tour sous Hublows pour savoir ce qu'elle avait comme paramètres (IBM ne donne pas beaucoup de doc avec ce portable) et je les ai reportés sous Linux: io=0x530 irq=5 dma=1,0 mpu_base=0x330 mpu_irq=15.

A la fin, sndconfig m'a parfaitement joué le son exemple et tout a fonctionné... mais seulement jusqu'au reboot suivant. En effet, après un redémarrage, le son fonctionne en saccadé et Linux rapporte un conflit d'IRQ. J'ai fait pleins d'autres essais, en vain. Je suis en panne.

Voici néanmoins les modifications apportées pour activer la carte son. Tout d'abord, le fichier /etc/conf.modules qui se verra rajouter les lignes suivantes:

alias sound cs4232
alias midi opl3
options opl3 io=0x388
options cs4232 io=0x530 irq=5 dma=1,0 mpu_base=0x330 mpu_irq=15

Mais également le fichier /etc/sysconfig/soundcard:

CARDTYPE=CS4232

2.6 Système RAID

Pour raccourcir les délais de remise en oeuvre du système en cas de crash d'un disque dur, il a été créé un miroir (système RAID 1) avec un deuxième disque IDE. Nous avons donc:

  • sur le premier contrôleur IDE: le disque dur 1 en maître (hda), le cdrom en esclave (hdb).
  • sur le deuxième contrôleur IDE: le disque dur 2 en maître (hdc).

Le fait de mettre le miroir sur un contrôleur différent est d'autant mieux pour la sécurité: en effet, même si le contrôleur lache, le miroir peut prendre le relai. Ce disque miroir sera partitionné exactement de la même manière que le premier (sauf le swap qui n'a pas besoin d'être dupliqué).

Il faut ensuite créer le fichier /etc/raidtab. Une entrée de ce type devra alors être créée pour chaque partition à mettre en miroir:

raiddev /dev/md0
    raid-level                  1
    nr-raid-disks               2
    nr-spare-disks              0
    chunk-size                  4
    persistent-superblock       1

    device /dev/hda5
    raiddisk 0
    device /dev/hdc5
    raiddisk 1

Il faut ensuite exécuter mkraid /dev/md0.


3. SERVICES INTRANET

3.1 DNS (bind 8.2.2)

Le DNS est un des points les plus important de l'administration d'un réseau. Pour de plus amples explications, se référer au NET-3-HOWTO, au DNS-HOWTO et aux livres TCP/IP Administration de réseau ou DNS et Bind (aux Editions O'Reilly).

Les fichiers qui nous intéressent sont /etc/host.conf, /etc/resolv.conf, /etc/hosts, /etc/nsswitch.conf, /etc/named.conf, ainsi que ceux du répertoire /var/named.

host.conf doit contenir:

order hosts,bind
multi on

Cela signifie que la recherche d'un hôte se fait d'abord par le fichier hosts puis par le service bind (DNS).

resolv.conf contient le nom de domaine, les domaines de recherche éventuels et les adresses de DNS. Il doit donc avoir un contenu du type:

domain olympe
search olympe
nameserver 55.134.16.33

hosts doit contenir au minimum:

127.0.0.1       localhost
55.134.16.33    zeus

nsswitch.conf doit contenir une ligne du type (avec éventuellement quelques infos supplémentaires):

hosts:	files dns

named.conf (ex named.boot de bind version 4) contient:

options {
        directory "/var/named";
};

zone "." {
        type master;
        file "root.db";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "local.127.0.0";
};

zone "olympe" {
        type master;
        file "olympe";
};

zone "134.55.in-addr.arpa" {
        type master;
        file "olympe.55.134";
};

La zone cache (".") a été modifiée: comme il n'y a pas de serveurs DNS racines, il faut que celui de notre intranet le soit (d'où le type master à la place du type hints). Les zones après 0.0.127.in-addr.arpa ont été rajoutées au fichier d'origine et concernent les fichiers de noms pour certains domaines (dont le nôtre).

La ligne file de chaque paragraphe contient le nom des fichiers de références dans /var/named.

root.db (le cache) contient normalement les DNS racines importants d'Internet (si on est connecté). Dans le cas d'une connection permanente à ce réseau, il faudra régulièrement le mettre à jour. Pour l'instant, il a été remplacé par le fichier suivant afin de faire de notre serveur un serveur racine:

; Default TTL
$TTL 1d

@       IN      SOA     zeus.olympe. root.zeus.olympe. (
                                        1999102800        ; Serial
                                        3h                ; Refresh
                                        1h                ; Retry
                                        7d                ; Expire
                                        1d )              ; Negative cache TTL

                IN      NS      zeus.olympe.
zeus.olympe.    IN      A       55.134.16.33

localhost.      IN      A       127.0.0.1

0.0.127.in-addr.arpa.   IN      NS      zeus.olympe.
olympe.                 IN      NS      zeus.olympe.
134.55.in-addr.arpa.    IN      NS      zeus.olympe.

En fait, il contient les règles pour résoudre chaque domaine ou sous-domaine de notre intranet.

La ligne serial contient un numéro de série (du type AAAAMMJJxx) permettant d'identifier les versions du fichier de nom. Les autres lignes sont des intervalles de temps pour certaines opérations du serveur et pour la validité des données. Vous pouvez utiliser les valeurs ci-dessus qui sont raisonnables.

local.127.0.0 est celui qui intéresse le serveur (c'est un cache local). Il doit être légèrement modifié:

$TTL 1d
@       IN      SOA     localhost. root.localhost. ( 1999102800 3h 1h 7d 1d )
        NS      localhost.

1       PTR     localhost.

olympe est celui qui intéresse notre domaine pour les accès distants. Il permet d'avoir une correspondance entre nom et adresse IP. C'est lui qui permettra à tout poste client utilisant ce DNS, de savoir où se connecter lorsqu'il demandera www.olympe par exemple. Il n'est pas indispensable d'avoir une correspondance facile pour toutes les machines mais uniquement pour celles qui sont accédées à distance; les autres peuvent être génériques. Il est à créer dans /var/named.

$TTL 1d
@       IN      SOA     zeus.olympe. root.zeus.olympe. ( 1999102800 3h 1h 7d 1d )

                A       zeus.olympe.
                NS      zeus.olympe.
                MX      10 zeus.olympe.

zeus            A       55.134.16.33
mail            CNAME   zeus
ftp             CNAME   zeus
www             CNAME   zeus
intranet        CNAME   zeus
news            CNAME   zeus
hera            A       55.134.16.34
ares            A       55.134.16.61

router          A       55.134.16.9

pass1           A       55.134.16.13
pass2           A       55.134.16.14
S001279A        CNAME   pass1
S001281A        CNAME   pass2

16-0    A       55.134.16.0
16-1    A       55.134.16.1
...

olympe.55.134 est celui qui permet au serveur d'identifier l'origine de votre machine: il contient la correspondance entre adresse IP et nom. Il est associé à la zone 134.55.in-addr.arpa (pour les adresses du type 55.134.*) de named.conf. C'est un fichier indispensable pour le bon fonctionnement d'un DNS et qui doit contenir la correspondance pour toutes les machines du réseau. Dans le cas d'un gros réseau (nous avons 450 postes), il vaut mieux mettre en tête les machines remarquables (serveurs, routeurs, etc.) et ensuite donner un nom générique à toutes les autres machines. L'essentiel est qu'il existe une correspondance entre adresse et nom.

$TTL 1d
@       IN      SOA     zeus.olympe. root.zeus.olympe. ( 1999102800 3h 1h 7d 1d )

                NS      zeus.olympe.
                MX      10 zeus.olympe.

9.16            PTR     router.olympe.
13.16           PTR     pass1.olympe.
14.16           PTR     pass2.olympe.
33.16           PTR     zeus.olympe.
34.16           PTR     hera.olympe.
61.16           PTR     ares.olympe.

0.16            PTR     16-0.olympe.
1.16            PTR     16-1.olympe.
...

Tout allait pour le mieux dans le meilleur des intranet, lorsqu'un système de messagerie commercial (appelons le Hades; ce sera aussi son nom de domaine) fut ajouté sur notre réseau. Le problème était le suivant: Hades arrivait un peu tard et n'offrait qu'un nombre limité de boîtes aux lettres (problème de licences) et il n'était donc pas question de balayer Olympe. Il fallait donc assimiler le nouveau domaine (faire entrer Hades dans l'Olympe ;-)) au niveau DNS afin de pouvoir envoyer du courrier de manière transparente depuis Olympe vers Hades, le rapatriement dans l'autre sens étant assuré par Fetchmail.

Pour le DNS, cela a été fait en ajoutant ces quelques lignes dans le fichier root.db de notre DNS racine:

hades.          IN      NS      dns1.hades.
dns1.hades.     IN      A       55.37.146.2

dns1.hades est le DNS racine du domaine hades. Toute résolution concernant ce domaine sera donc transmise vers lui et de là, vers ses serveurs secondaires.

Après modification de named.conf ou d'un des fichiers de paramétrage named, il faut penser à redémarrer le service de nom par la commande ndc restart ou bien, si les modifications portent sur le contenu des fichiers /var/named/* par ndc reload.

Remarques:

  • Le DNS est vraiment un point très sensible: si vous le configurez mal, vous pouvez avoir des problèmes avec les autres services (en particulier Sendmail).
  • Dans la précédente version du document, j'avais commis de grosses erreurs de configuration et il n'est pas exclus qu'il y en ait encore. Néanmoins, ces fichiers ont été beaucoup débuggés.

3.2 HTTP (apache 1.3.9)

Apache est le serveur Web. Ses fichiers de configuration sont situés dans /etc/httpd/conf: les anciens fichiers access.conf et srm.conf ont été inclus dans httpd.conf qui est désormais le fichier unique de configuration. Il faudra y remplacer systématiquement les pointeurs vers /home/httpd/html par /httpd/html qui est situé, dans notre cas, sur une partition à part et qui est donc plus sécurisé.

Mais il y a bien d'autres choses configurables qui enrichissent les possibilités du serveur:

  • les SSI (Server-Side Include): ce sont des commentaires dans vos pages html qui sont interprètés par le serveur et remplacés par du code ou des valeurs de variables. Ainsi <!--#echo var="LAST_MODIFIED" --> affichera la date de dernière modification du document chargé, <!--#include file="barre.html" --> incluera le fichier barre.html dans la page lors de son chargement. Les pages contenant des SSI doivent avoir l'extention .shtml (parsed-html). On peut faire de véritables scripts avec ces SSI et nos deux exemples sont vraiment basiques.

    Pour les activer, httpd.conf devra contenir le module mod_include:
    LoadModule includes_module    modules/mod_include.so
    AddModule mod_include.c
    
    Il faudra aussi déclarer le nouveau type:
    AddType text/html .shtml
    AddHandler server-parsed .shtml
    
    Enfin, il devra y avoir une directive Options Includes dans la section <Directory répertoire_des_pages_ssi> qui vous intéresse.
     
  • les pages protégées: on peut restreindre l'accès aux pages d'un répertoire soit par l'adresse d'origine du poste client, soit par une demande d'identification. Cela se fait dans le fichier access.conf de la manière suivante:
    <Directory /httpd/html/repertoire_protege>
    # protection du répertoire par mot de passe
    AuthType basic
    AuthName "zone protégée"
    # fichier des mots de passe
    AuthUserFile /etc/httpd/conf/.users
    # règle d'authentification: il suffit d'avoir un utilisateur valide
    Require valid-user
    
    # limitation d'accès à notre plage d'adresse uniquement
    Order allow,deny
    Allow from 55.134
    </Directory>
    
    Ces directives peuvent également être placées dans un fichier .htaccess situé dans le répertoire à protéger. Dans ce cas, vérifiez bien que access.conf a une directive AllowOverride AuthConfig Limit ou Allowverride All pour le répertoire en question (AllowOverride permet de "supplanter" certains paramètres d'un répertoire contenus dans access.conf par ceux du fichier .htaccess de ce répertoire).

    Le fichier /etc/httpd/conf/.users contenant les utilisateurs et leurs mots de passe est généré et modifié par la commande htpasswd.

    Comme pour les SSI, il faudra veiller à ce que les modules nécessaires soient dans la configuration, à savoir mod_access et mod_auth.
     

Chaque fois que des modifications sont effectuées, il faut penser à redémarrer le service par la commande /etc/rc.d/init.d/httpd restart.

Pour de plus amples renseignements, se reporter à la documentation HTML qui se trouve dans le répertoire /home/httpd/html.

Remarques:

  • Ne pas oublier de modifier, le cas échéant, le fichier /etc/mime.types qui contient tous les types de fichiers MIME. Dès lors que l'on veut utiliser les fichiers HTML en .htm, il faut modifier la ligne text/html pour y ajouter cette extension (sous les anciennes RedHat).
  • La configuration peut se faire de manière plus conviviale sous X avec comanche.

3.3 FTP (wu-ftpd 2.6.0)

Le FTP est un service général. Chaque utilisateur va pointer sur son répertoire de base (dans /home) et pouvoir ainsi y accéder à distance.

L'accès anonyme permet à n'importe qui d'accéder au répertoire FTP prédéfini du serveur. Il s'agit du répertoire de base de l'utilisateur ftp. Ce répertoire de base devrait être /ftpd (car sur une partition à part, contrairement à /home/ftp).

Le fichier de paramétrage est /etc/ftpaccess. Par rapport au fichier livré par défaut, il a été modifié:

# création d'une seule classe d'utilisateur
class   all   real,guest,anonymous  *

# pas de message avec les nom/version du daemon
greeting brief

email root@zeus.olympe

# limitation à 10 utilisateurs simultanés
limit all 10 Any /etc/ftp/max.msg

# interdiction de retirer le fichier passwd
noretrieve /etc/passwd

# 3 essais max
loginfails 3

# gestion des upload
upload  /ftpd   *               no
upload  /ftpd   /pub/incoming   yes     root    ftp     0311    nodirs

# affichage auto du fichier README au login et au changement de rép.
readme  README*    login
readme  README*    cwd=*

# messages de bienvenue, de changement de répertoire, de shutdown
banner /etc/ftp/intro.msg
message /etc/ftp/welcome.msg    login
message .message                cwd=*
shutdown /etc/ftp/shutmsg

# utilisation des commandes
compress        yes             all
tar             yes             all
chmod		no		guest,anonymous
delete		no		guest,anonymous
overwrite	no		guest,anonymous
rename		no		guest,anonymous

# journaux
log transfers anonymous,real inbound,outbound

# mode de vérification
passwd-check rfc822 warn

Pour que tout fonctionne, il ne faut pas oublier que le chemin qui mène aux fichiers messages est indiqué par rapport à la racine pour les utilisateurs standards et par rapport au répertoire de base /ftpd pour anonymous. Ainsi ces fichiers doivent se trouver dans /etc/ftp ainsi que /ftpd/etc/ftp.

Par ailleurs, le répertoire /pub/incoming (pour la réception de fichiers) a les droits 3733 (écriture possible mais pas lecture).

Pour plus de renseignements, voir la rubrique man ftpaccess.

3.4 IRC (ircd 2.9.32)

Ce service de dialogue en direct n'est pas livré d'origine avec la RedHat, néanmoins le package ircd permet de l'installer. Le seul fichier à manipuler est le fichier /etc/ircd.conf. Pour avoir un service simple, il suffit de commenter (par #) la totalité des lignes de paramètres et juste mettre en place les suivants:

# Machine utilisée et description ou nom
M:zeus.olympe::Deus ex machina
# Administrateur (affiché sur requête /admin lorsqu'on est connecté)
A:Astérix Legaulois:root@olympe:Administrateur expérimental...;-)
# Port réservé aux connections (paramétrage minimal)
P::::6667

# Classes d'utilisateurs
Y:1:90:0:20:100000
Y:2:90:300:1:600000
Y:10:90:0:3:100000
# Authorisations de connection (pas de limitation chez nous)
I:*::*::1
I:*@*::*@*::1

Pour lancer le daemon IRC, il suffit de lancer le script /etc/rc.d/init.d/ircd start.

Pour de plus amples explications, se référer au fichier de configuration largement commenté ainsi qu'à la documentation (/usr/doc/ircd-xxx/INSTALL).

3.5 News (inn 2.2)

Les fichiers de configuration (très nombreux) se trouvent, sauf mention contraire, dans /etc/news.

Le fichier inn.conf servira à identifier notre serveur, à remplir certains champs des articles et à filtrer les imports/exports:

domain:         olympe
fromhost:       news.olympe
pathhost:       news.olympe
organization:   Deus ex machina
server:         news.olympe

Le fichier hosts.nntp contient la liste des serveurs qui vont se connecter à nous (les jokers sont interdits, donc chaque machine ou adresse doit être détaillée):

localhost:
55.70.211.97:

Le fichier nnrp.access contient la liste des machines ou adresses autorisées à se connecter au serveur (les jokers sont autorisés):

*:: -no- : -no- :!*
localhost:Read Post:::*
55.134.*:Read Post:::*

Tout le monde est interdit d'accès par défaut. Le serveur lui-même et toutes les adresses du type 55.134... (notre domaine) sont autorisés.

Le fichier /var/lib/news/active contient la liste des newsgroups avec leur paramétrage:

control 0000000000 0000000001 y
junk 0000000000 0000000001 y
test 0000000000 0000000001 y
to 0000000000 0000000001 y

Il vaut mieux ne pas y toucher manuellement mais utiliser la commande ctlinnd pour ajouter ou supprimer des groupes:

  • L'ajout se fait par ctlinnd newgroup nom_du_groupe y. Le y de la fin indique que les envois locaux sont autorisés. On peut également mettre un n (seuls les envois distants sont autorisés) ou un m (le newsgroup est alors modéré).
  • La suppression d'un groupe se fait par ctlinnd rmgroup nom_du_groupe.

Le fichier /var/lib/news/newsgroups contient les descriptions des newsgroups. Celui-ci peut être modifié manuellement. Certains clients news utilisent ses données et il faut donc le remplir.

Dans le cas d'un serveur intranet isolé, ces commandes et ces paramétrages peuvent suffire. Par contre, dans le cas où votre serveur de news cohabite avec d'autres, il pourra être intéressant de "feeder" les news. Ce point sera vu dans une version ultérieure de ce document.

3.6 Mail (sendmail 8.9.3)

Plutôt que de m'attaquer au fichier sendmail.cf, réputé le plus ardu de tous les fichiers de config sous Linux, je me suis contenté de la configuration par scripts m4 (plus classique). Elle se fait dans le répertoire /usr/lib/sendmail-cf/cf. Le fichier qui nous intéresse est le fichier redhat.mc:

divert(-1)
include(`../m4/cf.m4')
define(`confDEF_USER_ID',``8:12'')
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
define(`confAUTO_REBUILD')
define(`confTO_CONNECT', `1m')
define(`confTRY_NULL_MX_LIST',true)
define(`confDONT_PROBE_INTERFACES',true)
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
FEATURE(`smrsh',`/usr/sbin/smrsh')
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
dnl HACK(check_mail3,`hash -a@JUNK /etc/mail/deny')
dnl HACK(use_ip,`/etc/mail/ip_allow')
dnl HACK(use_names,`/etc/mail/name_allow')
dnl HACK(use_relayto,`/etc/mail/relay_allow')
dnl HACK(check_rcpt4)
dnl HACK(check_relay3)
FEATURE(`access_db')
FEATURE(`blacklist_recipients')
dnl FEATURE(`relay_based_on_MX')

Le fichier de base convient parfaitement au niveau sécurité, en particulier avec cette nouvelle version 8.9 où les contrôles ont été améliorés et simplifiés. Pour cette raison les hacks ont été supprimés (les lignes commençant par dnl sont en fait des commentaires).

Si vous faites néanmoins des modifications, le fichier de configuration peut être généré par m4 redhat.mc > /etc/sendmail.cf. Attention: pensez à garder une copie du précédent fichier pour le cas où plus rien ne fonctionnerait.

Dans le cas de notre intranet, il faudra faire un petit complément en créant un fichier /etc/mail/relay-domains qui contiendra juste olympe. Ainsi, tous les postes de notre domaine seront autorisés à utiliser ce serveur pour relayer leur courrier vers des domaines externes (en l'occurence hades).

Un fichier très simple à manipuler est /etc/aliases. Il contient un alias suivi du ou des noms des boîtes aux lettres/utilisateurs réels:

artistes:          davinci, magritte, renoir
leonardo.davinci:  davinci	

Ce fichier fait qu'en écrivant à l'alias artistes, le courrier est envoyé dans les boîtes davinci, magritte et renoir. En écrivant à leonardo.davinci, on écrit en fait à l'utilisateur davinci.

Après avoir modifié ce fichier, il faut penser à exécuter la commande newaliases qui permet à SendMail de prendre en compte les changements effectués.

Remarque: sendmail utilise beaucoup le DNS, en particulier pour les controles de spam/relay, et si vous avez des rejets étranges, controlez le serveur de noms. Une fois encore, le DNS est un des services les plus importants et c'est un de ceux que vous aurez intérêt à vraiment soigner.

3.7 Gestion de comptes mail (fetchmail 5.0.0)

C'est un complément indispensable à sendmail si vous avez des comptes de courrier externes et que vous souhaitez les rapatrier en local. Dans notre cas, le DNS a été paramètré pour fonctionner avec le domaine de messagerie hades. Il faudra donc récupérer le courrier des boîtes aux lettres de ce domaine pour le placer dans les boîtes aux lettres locales.

Pour cela, il faudra créer un fichier /root/.fetchmailrc avec les droits -rw------- (0600) puis simplement exécuter fetchmail. Voici, le fichier de config simple utilisé pour l'intranet:

# Exécution en mode daemon, récupération toutes les 15 min.
set daemon 900

# Fichier log
set logfile /var/log/fetchmail.log

# Appel du serveur mail.hades en pop3
# Transfert de la boîte direction sur hades vers la boîte direction locale
# ...
poll mail.hades protocol pop3:
    user direction password "AzXrTy2c" is direction
    user compta password "12345678" is compta
    user personnel password "Zn7hL9ik" is grh;

Remarques:

  • direction, compta et grh en local sont en fait des alias pointant sur plusieurs noms d'utilisateurs (cf. chapitre sendmail pour plus de précisions sur les alias).
  • Ce fichier peut être généré par fetchmailconf sous X par quelques clics si vous préférez.
  • fetchmail peut également être ajouté dans le fichier /etc/rc.d/rc.local afin que le service soit démarré lors du boot.

3.8 Liaisons netbios (smbmount et samba 2.0.5a)

En dehors de l'utilisation de samba proprement dite, vous pouvez utiliser smbmount depuis le serveur. Cet utilitaire vous permettra de monter un répertoire partagé Windows distant sur votre système de fichier. Ainsi, en faisant par exemple smbmount //ws_hublots98/data /mnt/smbfs, puis en indiquant le mot de passe éventuel, vous aurez le répertoire partagé sous data sur votre micro ws_hublots98 accessible dans le point de montage /mnt/smbfs. Le micro ws_hublots98 doit être dans le fichier hosts ou bien connu du DNS. Le mot de passe peut être donné sur la ligne de commande par l'option -U user%password.

Pour fermer le point de montage smbfs, il suffit de faire un umount /mnt/smbfs. Néanmoins, si celui-ci est récalcitrant, exécutez d'abord la commande fuser -km /mnt/smbfs.

Pour samba, le fichier qui nous intéresse est /etc/smb.conf.

#=== Paramètres généraux ===
[global]
   # la machine dans le workgroup BANDE, avec commentaire "Serveur Samba"
   workgroup = BANDE
   server string = Serveur Samba

   # un fichier log par origine avec limite de taille
   log file = /var/log/samba/log.%m
   max log size = 50

   # sécurité de partage (faible)
   security = share

   socket options = TCP_NODELAY 

#=== Partages ===
# Le répertoire /windows est une partition à part
[echanges]
   comment = Repertoire de partage
   path = /windows
   read only = no
   public = yes

Avec le fichier ci-dessus vous simulez le fonctionnement d'un workgroup Windows9x: un seul répertoire partagé en accès complet sous echanges. Comme sous 9x, il n'y a aucune véritable sécurisation dans ce cas: n'importe qui peut y écrire n'importe quoi.

3.9 Indexation/recherche Web (htdig 3.1.3)

3.10 Partage d'agendas (webcalendar 1.11)

Sur un intranet, le partage d'agenda est une fonctionnalité qui a son utilité. Sous Linux il existe plusieurs logiciels qui permettent de le faire. J'ai finalement choisi webcalendar car il est très petit, très simple à installer, à paramètrer et à utiliser, et il est en français.

Pour l'installer, il suffit de lancer le script install.sh qui pose quelques questions. Les valeurs par défaut sont correctes sauf le point suivant qui doit être modifié pour notre serveur: Document Root for WebCal cgi's sera /httpd/cgi-bin.

Il faudra aussi vérifier le fichier /etc/httpd/conf/access.conf et modifier la section suivante le cas échéant:

<Directory /httpd/cgi-bin>
AllowOverride AuthConfig
Options ExecCGI
</Directory>

Ensuite, pour le paramétrage, rendez-vous dans le fichier /httpd/cgi-bin/webcal.conf:

#
# Variables fixées lors de l'installation
#
$HT_HOME = "/home/httpd/cgi-bin";
$DOC_ROOT = "cgi-bin";
$DB_DIR = "/var/webcal";
$VERSION = "1.11";
# Homepage supprimée car nous sommes hors internet
#$HOMEPAGE="http://bulldog.tzo.org/webcal/webcal.html";
$SHARED_SUBROUTINES = "$HT_HOME/webcal_shared.pl";
$HTPASSWD = "$DB_DIR/.htpasswd";
$START_HEADER = "Web Calendar";
$SERVER = $ENV{'HTTP_HOST'};
if (($ENV{'HTTPS'}) && ($ENV{'HTTPS'} eq "on")) {
        $HTTP = "https://";
} else {
        $HTTP = "http://";
}
$ENV{'PATH'} = "/bin:/usr/bin";
if ($0 =~ /webcal\.cgi/) {
    $IMAGE_DIR = "../icons";
} else {
    $IMAGE_DIR = "../../icons";
}

#
# PARAMETRAGES
#

# On passe en français
$LANG="french";

# On fait commencer la semaine par le lundi (Monday)
$WEEK_START="M";

# La journée de travail va de 7 h à 19 h
$START_HOUR = "0700";
$END_HOUR = "1900";

# Format 24 heures
$HOURS_FORMAT = 24;

# Afficher les heures sur la vue mensuelle/hebdo
$SHOW_HOURS_ON_MONTH = 1;

# Afficher toutes les heures sur la vue quotidienne
$SHOW_EMPTY_HOURS = 1;

# Fond avec image
$BGIMAGE="$IMAGE_DIR/green.png";

# Couleur des liens
$LINK_COLOR="blue";

# Couleur du texte
$FONT_COLOR="black";

# Couleur des jours de la semaine
$WEEKEND_COLOR="darkblue";
$WEEKDAY_COLOR="darkred";

# Couleur du jour et du mois courant
$CURRENT_DAY_COLOR="#E0E080";
$CURRENT_MONTH_COLOR="#E0E080";

# Couleur des cases vides
$NOT_A_DAY_COLOR="lightgrey";

# Logo affiché au dessus des agendas
#$LOGO1 = "$IMAGE_DIR/powered.jpg";

# Logo affiché en bas de page d'accueil
#$LOGO2 = "$IMAGE_DIR/assim.jpg";

# Nombre d'entrées affichées par jour sur la vue mensuelle
$NUM_ITEMS = "3";

# Longueur d'info affichée sur la vue mensuelle
$ITEM_LENGTH = "20";

# -------------------------
# language include files
# -------------------------

# [...] fin du fichier inchangée

1;

Par ailleurs, pour éviter que les utilisateurs ne créent plein d'agendas, j'ai dupliqué le script principal (webcal.cgi) et j'en ai fait une version allégée qui ne permet que la consultation des agendas existants.


 

 

 

 

 

 

News

Amiga

BeOS

Liens
 



Index | News | Amiga | BeOS | Linux | Liens
(c)1999-2000, Lignes Alternatives