<< Back to man.lupaworld.com


[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ suivant ]

Guide de référence pour Debian
Chapitre 9 - Configurer un système Debian


Ce chapitre décrit seulement les bases de la configuration du système. Avant de lire ce chapitre, vous devriez lire Installation du système Debian, Chapitre 3.

Pour ceux qui sont intéressés par la sécurité, il est hautement recommandé de lire Securing Debian Manual qui se trouve dans le paquet harden-doc.


9.1 Initialisation du système

Debian utilise le système de scripts d'initialisation System V. Voir Le programme init, Section 2.4.1 pour une introduction.


9.1.1 Personnaliser les scripts d'initialisation

Le moyen le plus facile de contrôler le comportement d'un script d'initialisation est de changer les variables d'environnement dans le fichier situé dans le répertoire /etc/default ayant le même nom que le script d'initialisation. [7] Par exemple, /etc/default/hotplug peut-être utilisé pour contrôler comment /etc/init.d/hotplug fonctionne. Le fichier /etc/default/rcS peut être utilisé pour personnaliser les défauts au démarrage pour motd, sulogin, etc.

Si vous ne pouvez pas obtenir le comportement que vous souhaitez en changeant ces variables, alors vous pouvez modifier les scripts eux-mêmes : ce sont tous des fichiers de configuration.


9.1.2 Personnaliser le journal du système

Le journal du système peut être configuré par le fichier /etc/syslog.conf. Utilisez le paquet colorize pour colorier les fichiers du journal. Voir syslogd(8) et syslog.conf(5).


9.1.3 Optimisation de l'accès au matériel

Quelques outils pour l'optimisation du matériel sont donnés à l'administrateur système avec Debian.

Monter un système de fichiers avec l'option noatime permet aussi d'accélérer les accès en lecture au fichier. Voir fstab(5) et mount(8).

Certains matériels peuvent être optimisés directement dans le noyau Linux lui-même à travers le système de fichiers proc. Voir Trop de fichiers ouverts, Section 7.2.7.

Il existe beaucoup d'utilitaires de configuration pour du matériel spécifique dans Debian. Beaucoup d'entre eux répondent à des besoins spécifiques des portables. Voici quelques paquets intéressants disponibles dans Debian.

ACPI est un modèle de gestion d'énergie plus récent qu'APM.

Certains de ces paquets ont besoin de modules du noyau spéciaux, qui sont inclus dans les dernières sources du noyau dans la plupart des cas. En cas de problème, vous aurez peut-être besoin de patcher le noyau vous-même.


9.2 Contrôle d'accès


9.2.1 Contrôle des connexions avec PAM

PAM (Pluggable Authentication Modules, Modules d'Authentification Greffables) permet de contrôler les connexions des utilisateurs.

     /etc/pam.d/*             # fichiers de contrôle de PAM
     /etc/pam.d/login         # fichier de contrôle de PAM pour la connexion
     /etc/security/*          # paramètres des modules de PAM
     /etc/securetty           # contrôle les connexions de root sur la console
     /etc/login.defs          # contrôle le comportement de login

Changez le contenu du fichier /etc/pam.d/login comme suit, si vous voulez des terminaux non sécurisés mais ne demandant pas de mot de passe. Faites le à vos propres risques.

     #auth       required   pam_unix.so nullok
     auth       required   pam_permit.so

Des astuces similaires peuvent être appliquées pour xdm, gdm, ..., pour avoir une console X sans mot de passe.

Au contraire, installez cracklib2 et réglez /etc/pam.d/passwd comme suit, si vous voulez forcez une bonne politique de mots de passe.

     password required       pam_cracklib.so retry=3 minlen=6 difok=3

Pour l'activation d'un compte, un mot de passe temporaire peut aussi être utile. Pour cela utilisez la commande passwd avec l'option -e. Voir passwd(1).

Le nombre maximum de processus peut être réglé avec ulimit -u 1000 dans un shell Bash ou avec la configuration de /etc/security/limits.conf. D'autres paramètres comme core peuvent être réglés d'une façon similaire. La valeur initiale de PATH peut être réglée dans le fichier /etc/login.defs avant le script de démarrage du shell.

La documentation de PAM est dans le paquet libpam-doc. Le Guide de l'Administrateur d'un Système Linux-PAM couvre la configuration de PAM, les modules disponibles, etc. La documentation inclut aussi le Guide du Développeur d'Applications Linux-PAM et le Guide du Développeurs de Modules Linux-PAM.


9.2.2 Pourquoi GNU su ne supporte pas le groupe wheel

C'est la célèbre phrase de Richard M. Stallman à la fin de l'ancienne page info su. Ne pas s'inquiéter : le su actuel de Debian utilise PAM, donc on peut restreindre l'accès de su à n'importe quel groupe en utilisant pam_wheel.so dans /etc/pam.d/su. Ce qui suit réglera le groupe adm du système Debian comme équivalent du groupe BSD wheel et autorisera su sans mot de passe pour les membres du groupe.

     # anti-RMS configuration in /etc/pam.d/su
     auth       required   pam_wheel.so group=adm
     
     # Wheel members to be able to su without a password
     auth       sufficient pam_wheel.so trust group=adm

9.2.3 Objet des groupes par défaut

Quelques groupes intéressants :

Pour une liste complète, voir la section « FAQ » dans Securing Debian Manual, qui se trouve aussi dans le paquet harden-doc dans Woody. De plus, le nouveau paquet base-passwd (>3.4.6) contient une liste officielle :/usr/share/doc/base-passwd/users-and-groups.html.


9.2.4 Travailler de façon sûre – sudo

J'utilise sudo principalement comme protection contre ma stupidité. Utiliser sudo est toujours mieux que d'utiliser le système avec le compte root.

Installez sudo et activez-le en configurant /etc/sudoers. Réglez aussi les possibilités de sudo pour les groupes dans /usr/share/doc/sudo/OPTIONS.

Cette configuration fournit aux membres du groupe « staff » un accès à toutes les commandes lancées en tant que root avec sudo et donne aux membres du groupe « src » un accès à certaines commandes lancées en tant que root avec sudo.

L'avantage de sudo est qu'il requiert seulement les mots de passe utilisateurs pour se connecter et que l'activité est surveillée. C'est un moyen simple de donner des pouvoirs à un administrateur débutant. Par exemple :

     $ sudo chown -R myself:mygrp .

Bien sûr, si vous connaissez le mot de passe de root (comme beaucoup d'utilisateurs individuels), n'importe quelle commande peut être lancée en tant que root depuis un compte utilisateur :

     $ su -c "shutdown -h now"
     Password:

(Je sais que je devrais limiter les privilèges du compte administrateur avec sudo. Mais comme c'est mon serveur personnel, je ne me suis pas encore embêté avec ça.)

Un autre programme permet à des utilisateurs ordinaires de lancer des commandes avec les privilèges de root, voir le paquet super.


9.2.5 Contrôle d'accès aux services

Le super-serveur internet, inetd, est exécuté lors du démarrage par /etc/rc2.d/S20inetd (pour le niveau d'exécution 2) qui est un lien vers /etc/init.d/inetd. inetd permet de n'exécuter qu'un démon qui en invoque plusieurs autres, réduisant ainsi la charge du système.

Lorsqu'une requête pour un service arrive, le protocole et le service sont identifiés en regardant dans la base de données stockée dans /etc/protocols et /etc/services. Pour un service internet normal, inetd utilise /etc/inetd.conf. Pour un service basé sur Sun-RPC, inetd utilise /etc/rpc.conf.

Pour la sécurité du système, assurez-vous de désactiver les services non utilisés dans /etc/inetd.conf. Les services Sun-RPC doivent être actifs pour NFS et d'autres programmes basés sur RPC.

Parfois, inetd n'exécute pas le serveur demandé directement, mais exécute le programme d'enveloppe de démon TCP/IP tcpd avec le serveur demandé comme argument dans /etc/inetd.conf. Dans ce cas, tcpd lance le serveur approprié après avoir enregistré dans le journal la requête et avoir fait quelques autres vérifications en utilisant les fichiers /etc/hosts.deny et /etc/hosts.allow.

Si vous avez un problème avec l'accès à distance sur un système Debian récent, commentez la ligne "ALL: PARANOID" dans /etc/hosts.deny si elle existe.

Pour plus de détails, voir inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5), et hosts_options(5).

Pour plus d'information sur Sun-RPC, voir rpcinfo(8), portmap(8), et /usr/share/doc/portmap/portmapper.txt.gz.


9.2.6 Centraliser l'identification – LDAP

Utilisez Lightweight Directory Access Protocol (LDAP). Références :


9.3 Graveurs de CD

Les graveurs de CD sur interface ATAPI/IDE sont devenus des périphériques courants. Le CD un bon média pour sauvegarder et archiver un système pour un utilisateur individuel ayant besoin d'une capacité < 640 Mo. Pour des informations plus officielles, consultez le CD-Writing-HOWTO du LDP.


9.3.1 Introduction

D'abord, sachez qu'une interruption de l'envoi des données vers le graveur entraînera des erreurs irrécupérables sur le CD. Prenez donc un graveur avec un cache aussi gros que possible. Si le prix n'a pas d'importance, optez pour une version SCSI plutôt qu'ATAPI/IDE. Si vous avez le choix de l'interface IDE sur laquelle connecter le graveur, préférez celle sur bus PCI (une de celles de la carte mère) plutôt qu'une sur bus ISA (carte SB16, etc.).

Un graveur connecté sur interface IDE doit être piloté par le pilote IDE-SCSI et non par le pilote CD IDE habituel pour les noyaux Linux 2.2 et 2.4. Le pilote SCSI générique doit aussi être activé. Pour cela, deux approches existent pour les noyaux distribués avec des distributions modernes (à la date de mars 2001).

Pour le noyau Linux 2.6, vous devriez utiliser le pilote IDE et accéder au graveur de CD directement avec le nom de périphérique /dev/hdx. Vous pouvez utiliser le DMA de cette façon.


9.3.2 Première approche : modules + lilo

Ajoutez la ligne suivante à /etc/lilo.conf si vous utilisez le noyau distribué avec Debian. Si vous utilisez plusieurs options, listez-les en les séparant par des espaces.

     append="hdx=ide-scsi ignore=hdx"

Ici, le graveur, accédé par le pilote ide-scsi, est identifié par hdx, où x représente :

     hdb      esclave sur le premier port IDE
     hdc      maître sur le second port IDE
     hdd      esclave sur le second port IDE
     hde ... hdh  sur un port IDE externe

Lancez les commandes suivantes, en tant que root, pour activer les options après avoir terminé la configuration :

     # lilo
     # shutdown -h now

9.3.3 Seconde approche : recompiler le noyau

Debian utilise make-kpkg pour créer le noyau. Utilisez la nouvelle option --append_to_version avec make-kpkg pour créer plusieurs images du noyau. Voir Le noyau Linux et Debian, Chapitre 7.

Utilisez la configuration suivante avec make menuconfig :


9.3.4 Étapes post-configuration

Le support pour le graveur peut être activé dans le noyau lors du démarrage avec les commandes suivantes :

     # echo ide-scsi >>/etc/modules
     # echo sg       >>/etc/modules
     # cd /dev; ln -sf scd0 cdrom

Une activation manuelle peut aussi être effectuée avec :

     # modprobe ide-scsi
     # modprobe sg

Après un redémarrage, vous pouvez vérifier l'installation avec :

     $ dmesg|less
     # apt-get install cdrecord
     # cdrecord -scanbus

[Par Warren Dodge] Quelquefois, il peut y avoir des conflits entre ide-scsi et ide-cd s'il y a à la fois un lecteur de CDROM et un graveur CD-R/RW sur le système. Essayez d'ajouter ce qui suit dans votre fichier /etc/modutils/aliases, exécutez update-modules et redémarrez.

     pre-install      ide-scsi      modprobe ide-cd

Cela force le pilote IDE à être chargé avant ide-scsi. Le pilote ide-cd prend le contrôle du lecteur de CDROM ATAPI—tout ce qu'on ne lui a pas dit d'ignorer. Cela laisse simplement les périphériques ignorés au contrôle de ide-scsi.


9.3.5 Image de CD (bootable)

Pour créer un CDROM contenant des fichiers contenus dans le répertoire target-directory/ en tant qu'image nommée cd-image.raw (CD bootable, format Joliet TRANS.TBL. Pour un CD non bootable, enlevez les options -b et -c), insérez une disquette de démarrage dans le premier lecteur de disquette et faites :

     # dd if=/dev/fd0 target-directory/boot.img
     # mkisofs -r -V volume_id -b boot.img -c bootcatalog -J -T \
             -o cd-image.raw target_directory/

Une utilisation amusante est de créer un CDROM DOS bootable. Si boot.img contient l'image d'une disquette de démarrage DOS, le CDROM démarrera comme si une disquette DOS était dans le premier lecteur de disquette (A:). Faire cela avec freeDOS est encore plus intéressant.

L'image créée peut être vérifiée en la montant en utilisant le périphérique de boucle (loop device).

     # mount -t iso9660 -o ro,loop cd-image.raw /cdrom
     # cd /cdrom
     # mc
     # umount /cdrom

9.3.6 Graver un CD (R, RW)

Premier test avec les commandes suivantes (cas d'un graveur double vitesse)

     # nice --10 cdrecord -dummy speed=2 dev=0,0 disk.img

Si le test est réussi, gravez un CD-R avec

     # nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

Ou gravez un CD-RW avec

     # nice --10 cdrecord -v -eject blank=fast speed=2 dev=0,0 disk.img

Certains graveurs de CD marchent mieux avec

     # nice --10 cdrecord -v blank=all speed=2 dev=0,0 disk.img

suivi de

     # nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

Deux étapes sont nécessaires pour empêcher que des fins d'attente SCSI lors du formatage n'interfèrent avec l'étape de gravure. Les arguments passés à nice peuvent avoir besoin d'un ajustement.


9.3.7 Créer l'image d'un CD

Certains CD-R et CD commerciaux ont des secteurs parasites à la fin qui les rendent incopiables par dd (le CD de Windows 98 est l'un d'eux). Le paquet cdrecord comprend la commande readcd. Utilisez-la pour copier le contenu de n'importe quel CD dans un fichier image. S'il s'agit d'un CD de données, montez-le et exécutez mount pour connaître sa taille. Divisez le nombre affiché (en blocs de 1024 octets) par 2 pour connaître le nombre de secteurs du CD (2048 octets). Lancez readcd avec les bonnes options et utilisez l'image du CD pour graver un CD-R/RW.

     # readcd target,lun,scsibusno # choisissez la fonction 11

Ici, positionnez tous les paramètres de ligne de commande à 0 dans la plupart des cas. Parfois, le nombre de secteurs donné par readcd est trop important ! Utilisez le nombre donné par mount pour de meilleurs résultats.

Il faut noter que l'utilisation de dd pose des problèmes avec un CD-ROM. La première exécution de dd peut causer un message d'erreur et entraîner une image disque plus petite avec la perte de la fin. La deuxième exécution de dd peut entraîner une image disque plus grande avec des données à jeter à la fin sur certains systèmes si la taille des données n'est pas spécifiée. Seule la seconde exécution de dd avec la taille des données correcte spécifiée, et sans éjecter le CD après un message d'erreur, semble permettre d'éviter ces problèmes. Si par exemple la taille de l'image affichée par df est 46301184 blocs, utilisez la commande suivante pour obtenir la bonne image disque (information empirique) :

     # dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2))

9.3.8 Images de CD Debian

Pour obtenir les dernières informations, consultez le site Debian CD.

Si vous avez une connexion Internet rapide, installez par le réseau en utilisant :

Si vous n'avez pas de connexion Internet rapide, achetez des CD depuis un vendeur de CD.

Merci de ne pas gâcher la bande passante en téléchargeant des images de CD standard à moins que vous ne soyez un testeur d'images de CD (même avec la nouvelle méthode jigdo).

Une image de CD à noter est celle de KNOPPIX - Système de Fichier Linux Fonctionnel sur CD. Ce CD démarre avec un système Debian fonctionnel sans s'installer sur le disque dur.


9.3.9 Système de sauvegarde sur CD-R

Pour copier les fichiers de configuration et de données importants sur CD-R, utilisez le script de sauvegarde backup. Voir aussi Copier et archiver un sous-répertoire entier, Section 8.3 et Sauvegarde différentielle et synchronisation de données, Section 8.4.


9.3.10 Copier un CD audio sur un CD-R

Je n'ai pas testé cela personnellement :

     # apt-get get install cdrecord cdparanoia
     # cdparanoia -s -B
     # cdrecord dev=0,0,0 speed=2 -v -dao -eject defpregap=1 -audio *.wav

ou,

     # apt-get install cdrdao #disk at once
     # cdrdao read-cd --device /dev/cdrom --paranoia-mode 3 my_cd # lit le CD
     # cdrdao write --device /dev/cdrom --speed 8 my_cd    # grave un nouveau CD

cdrdao fait une vraie copie (pas de trous, etc.).


9.3.11 Graver des DVD-R, DVD-RW et DVD+RW

Pour graver des DVD, il existe deux approches :


9.4 X

L'environnement X Window System est fourni par Xfree86. Il existe deux versions majeures du serveur X dans Debian : XFree86 Version 3.3 (XF3) et la série des XFree86 Version 4.x (XF4) toutes les deux basées sur les spécifications X11R6 de X.Org.

Pour les bases sur X, référez-vous à X(7), et les XWindow-User-HOWTO et Remote X Apps mini-HOWTO du LDP. Pour un guide d'utilisation spécifique à Debian, lisez /usr/share/doc/xfree86-common/FAQ.gz fournie dans le paquet xfree86-common. Elle contient une revue intéressante et exhaustive des problèmes d'assignation des touches par Branden Robinson.

Le serveur X, Section 9.4.3
un programme sur la machine locale qui affiche des fenêtres X et/ou un bureau sur le moniteur (CRT, LCD) d'un utilisateur et accepte des entrées au clavier et à la souris.
Clients X, Section 9.4.4
un programme sur une machine (locale ou distante) qui exécute un logiciel d'application compatible avec X-Window.

Cela inverse l'utilisation habituelle de « serveur » et « client » dans d'autres contextes.

Il y a plusieurs façons de faire accepter les connexions distantes d'un client X (côté application) à un serveur X (côté affichage) :

Toutes les méthodes de connexion distante, sauf ssh, ont besoin de l'activation des connexions TCP/IP au serveur X. Voir Utiliser X sur TCP/IP, Section 9.4.6.


9.4.1 Paquets X

Il existe quelques paquets globaux pour installer X sur un système Woody.

x-window-system-core
Ce paquet global fournit les composants essentiels pour une station de travail exécutant X Window System. Il fournit les bibliothèques X, un serveur X xserver-xfree86, un ensemble de polices, et un ensemble de clients et utilitaires X de base.
x-window-system
Ce paquet global fournit à peu près tous les composants de X Window System tels que développés par XFree86 Project, ainsi qu'un ensemble d'accessoires historiquement populaires. (Notamment, il dépend de x-window-system-core, twm, et xdm, càd pas besoin d'installer x-window-system-core si vous installez celui-ci.)
xserver-common-v3
Fichiers et utilitaires communs aux serveurs X XFree86 3.x (XF3)
xserver-*
Paquets supplémentaires pour le serveur XF3 afin de supporter du matériel non supporté par le nouveau serveur XF4 (xserver-xfree86), qu'elle qu'en soit la raison. Certaines cartes ATI mach64 anciennes ne sont pas supportées par XF4, certaines cartes vidéo plantent avec la version de XF4 de Woody, etc. (Pour connaître les paquets disponibles, utilisez apt-cache search xserver-|less. Tous les serveurs XF3 dépendent de xserver-common-v3.)

Dans la plupart des cas, x-window-system est le paquet à installer. (Si vous voulez vous connecter par la console, assurez-vous de désactiver xdm tel que décrit dans « Je veux désactiver X au démarrage ! », Section 8.1.4.)


9.4.2 Détection de matériel pour X

Pour activer la détection du matériel lors de la configuration de X, installez les paquets suivants avant d'installer le système X :


9.4.3 Le serveur X

Consultez XFree86(1) pour des informations sur le serveur X.

Exécution du serveur X depuis une console locale :

     $ startx -- :<display> vtXX
     par exemple :
     $ startx -- :1 vt8 -bpp 16
     ... exécution sur un terminal vt8 connecté à localhost:1 en mode 16 bpp

Les arguments donnés après -- sont pour le serveur X.

Notez que lorsque vous utilisez le script ~/.xserverrc pour personnaliser le démarrage du serveur X, il faut utiliser exec avec le serveur X réel. Sinon, cela peut rendre le serveur X lent à démarrer ou à quitter. Par exemple :

     #!/bin/sh
     exec /usr/bin/X11/X -dpi 100 -nolisten tcp

9.4.3.1 Configurer le serveur X (version 4)

Pour (re-)configurer un serveur XF4,

     # dpkg-reconfigure --priority=low xserver-common
     # dpkg-reconfigure --priority=low xserver-xfree86

générera le fichier /etc/X11/XF86Config-4 et configurera X avec le script dexconf.


9.4.3.2 Configurer le serveur X (version 3)

Pour (re-)configurer un serveur XF3, par exemple pour une carte ATI mach64,

     # dpkg-reconfigure --priority=low xserver-common-v3
     # dpkg-reconfigure --priority=low xserver-mach64

générera le fichier /etc/X11/XF86Config et configurera X avec le script xf86config-v3.


9.4.3.3 Configurer manuellement le serveur X

Avec Woody, pour ajouter des personnalisations à /etc/X11/XF86Config-4, n'éditez pas le fichier de configuration entre le texte :

     ### BEGIN DEBCONF SECTION
     [snip]
     ### END DEBCONF SECTION

Au lieu de cela, ajoutez les personnalisations avant le texte. Par exemple, pour utiliser une carte video personnalisée, ajoutez quelquechose comme ce qui suit au début du fichier :

     Section "Device"
       Identifier        "Custom Device"
       Driver            "ati"
       Option            "NoAccel"
     EndSection
     
     Section "Screen"
       Identifier  "Custom Screen"
       Device      "Custom Device"
       Monitor     "Generic Monitor"
       DefaultDepth 24
       Subsection "Display"
         Depth       8
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
       Subsection "Display"
         Depth       16
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
       Subsection "Display"
         Depth       24
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
     EndSection
     
     Section "ServerLayout"
         Identifier        "Custom"
         Screen            "Custom Screen"
         InputDevice       "Generic Keyboard" "CoreKeyboard"
         InputDevice       "Configured Mouse" "CorePointer"
     EndSection

Pour Sarge (testing au moment de l'écriture), si vous souhaitez garder les personnalisations de /etc/X11/XF86Config à travers la mise-à-jour, lancez les commandes suivantes en tant que root :

     # cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.custom
     # md5sum /etc/X11/XF86Config-4 > /var/lib/xfree86/XF86Config-4.md5sum
     # dpkg-reconfigure xserver-xfree86

Afin d'obtenir de belles polices de caractères, vous devez éditer /etc/X11/XF86Config-4 comme décrit dans Polices TrueType dans X, Section 9.4.13.

Vérifiez aussi les autres parties de votre configuration X. De mauvais paramètres pour le moniteur peuvent donner un mal de tête plus important que de mauvaises polices, aussi assurez-vous que le taux de rafraichissement est aussi élevé que peut le supporter votre moniteur (85Hz est super, 75Hz est OK, 60Hz fait mal aux yeux).


9.4.4 Clients X

La plupart des clients X peuvent être démarrés comme ceci :

     client $ xterm -geometry 80x24+30+200 -fn 6x10 -display hostname:0 &

Ici, les arguments de ligne de commande optionnels signifient :

Le displayname (nom d'affichage) par défaut pour un programme client X (côté application) peut être défini par la variable d'environnement DISPLAY. Par exemple, avant de lancer un programme client X, on peut exécuter l'une des commandes suivantes pour cela :

     $ export DISPLAY=:0 
             # Valeur par défaut, machine locale avec premier écran X
     $ export DISPLAY=hostname.fulldomain.name:0.2
     $ export DISPLAY=localhost:0

Le démarrage peut être personnalisé avec le fichier ~/.xinitrc. Par exemple :

     xrdb -load $HOME/.Xresources
     xsetroot -solid gray &
     xclock -g 50x50-0+0 -bw 0 &
     xload -g 50x50-50+0 -bw 0 &
     xterm -g 80x24+0+0 &
     xterm -g 80x24+0-0 &
     twm

Comme décrit dans Sessions X personnalisées, Section 9.4.5.1, cela outrepasse tout ce qu'une exécution normale de Xsession fait lorsqu'elle est démarrée depuis startx. Utilisez plutôt ~/.xsession et utilisez cette approche seulement en dernier recours. Voir xsetroot(1x), xset(1x) and Ressources X, Section 9.4.10.


9.4.5 Sessions X

Une session X (serveur X + client X) peut être lancée par :

La console peut être rappelée par « Je veux désactiver X au démarrage ! », Section 8.1.4.


9.4.5.1 Sessions X personnalisées

Le script de démarrage par défaut /etc/X11/Xsession est une combinaison de /etc/X11/Xsession.d/50xfree86-common_determine-startup et /etc/X11/Xsession.d/99xfree86-common_start.

L'exécution de /etc/X11/Xsession est affectée par /etc/X11/Xsession.options et consiste essentiellement en l'exécution d'un programme avec la commande exec trouvé en premier, en cherchant dans l'ordre suivant :

  1. ~/.xsession ou ~/.Xsession, s'il existe.
  2. /usr/bin/x-session-manager, s'il existe.
  3. /usr/bin/x-window-manager, s'il existe.
  4. /usr/bin/x-terminal-emulator, s'il existe.

La signification exacte de ces commandes est déterminée par le système de solutions de rechange de Debian décrit dans Commandes de rechange, Section 6.5.3. Par exemple :

     # update-alternatives --config x-session-manager
     ... ou
     # update-alternatives --config x-window-manager

Pour que n'importe quel gestionnaire de fenêtre soit le défaut, tout en gardant les gestionnaires de session de GNOME et KDE installés, remplacez le fichier /etc/X11/Xsession.d/50xfree86-common_determine-startup par celui attaché au deuxième rapport de bogue à http://bugs.debian.org/168347 (j'espère que cela sera inclus rapidement) et éditez /etc/X11/Xsession.options comme suit pour désactiver le gestionnaire de session X :

     # /etc/X11/Xsession.options
     #
     # configuration options for /etc/X11/Xsession
     # See Xsession.options(5) for an explanation of the available options.
     # Default enabled
     allow-failsafe
     allow-user-resources
     allow-user-xsession
     use-ssh-agent
     # Default disabled (enable them by uncommenting)
     do-not-use-x-session-manager
     #do-not-use-x-window-manager

Sans la modification ci-dessus, gnome-session et kdebase sont les paquets contenant ces gestionnaires de session X. Les enlever permet le gestionnaire de fenêtre d'être le défaut. (Beurk, une autre idée ?)

Sur un système où /etc/X11/Xsession.options contient une ligne allow-user-xsession sans caractère la précédent, n'importe quel utilisateur peut personnaliser l'action de /etc/X11/Xsession en créant ~/.xsession ou ~/.Xsession.

La dernière commande dans le fichier ~/.xsession devrait être de la forme exec some-window/session-manager pour démarrer votre gestionnaire de fenêtres/session favori.

Un bon exemple de script ~/.xsession est donné par /usr/share/doc/xfree86-common/examples/xsession.gz.

J'utilise ceci pour définir le gestionnaire de fenêtres, l'accès à l'écran et le support de la langue pour chaque compte utilisateur. Voir Démarrer une session X pour un utilisateur, Section 9.4.5.2, Devenir root sous X, Section 9.4.12, et Exemple de système X bilingue, Section 9.7.9.

Si vous souhaitez avoir plusieurs clients X lancés automatiquement, voir les exemples de Clients X, Section 9.4.4 et appelez-les depuis ~/.xsession plutôt que ~/.xinitrc.

D'autres ressources X spécifiques à chaque utilisateur peuvent être stockées dans ~/.Xresources. Voir Ressources X, Section 9.4.10.

Des cartes clavier personnalisées et des actions spécifiques associées aux boutons de la souris peuvent être spécifiés dans le script de démarrage de l'utilisateur. Voir Clavier et souris sous X, Section 9.4.11.


9.4.5.2 Démarrer une session X pour un utilisateur

Suivant les principes décrits à Sessions X personnalisées, Section 9.4.5.1, un gestionnaire de session/fenêtres X spécifique à chaque utilisateur peut être activé en installant le paquet indiqué et en configurant le fichier ~/.xsession comme suit. (J'aime bien blackbox/fluxbox pour son style simple et sa rapidité.) :

Voir Window Managers for X.


9.4.5.3 Configurer KDE et GNOME

Afin de configurer un environnement KDE ou GNOME complet, les meta-paquets suivants sont utiles :

En installant ces paquets avec des outils qui gèrent la priorité « recommends », comme dselect et aptitude, vous aurez un choix de logiciel plus riche qu'en les installant avec apt-get.

Si vous voulez une connexion à la console, assurez-vous de désactiver les gestionnaires d'affichage X, comme kdm, gdm, et wdm, qui peuvent être installés par le système de dépendances, en suivant les instructions décrites à « Je veux désactiver X au démarrage ! », Section 8.1.4.

Si vous voulez avoir GNOME par défaut plutôt que KDE, configurez x-session-manager comme décrit à Commandes de rechange, Section 6.5.3.


9.4.6 Utiliser X sur TCP/IP

Comme les connexions TCP/IP distantes sans chiffrage peuvent être sujettes à des attaques d'écoute de ligne, la configuration par défaut de X de Debian désactive les sockets TCP/IP. Pensez à utiliser ssh pour des connexions X distantes (Voir Connexion à un serveur X distante – ssh, Section 9.4.8).

La méthode décrite ici n'est pas encouragée à moins que l'on soit dans un environnement très sûr derrière un bon pare-feu et en présence d'utilisateurs de confiance uniquement. La configuration suivante sur le serveur X restaure les connexions TCP/IP :

     # find /etc/X11 -type f -print0 | xargs -0 grep nolisten
     /etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp

Supprimez -nolisten pour permettre les connexions TCP/IP à X.


9.4.7 Connexion à un serveur X distant – xhost

xhost autorise l'accès en se basant sur les noms d'hôtes, ce qui n'est pas sûr du tout. Les commandes suivantes permettent de désactiver la vérification de l'hôte et autorisent des connexions de n'importe où si les connexions TCP/IP sont autorisées (voir Utiliser X sur TCP/IP, Section 9.4.6) :

     $ xhost +

Vous pouvez réactiver la vérification de l'hôte avec :

     $ xhost -

xhost ne fait pas la différence entre les utilisateurs sur l'hôte distant. De plus, les noms d'hôtes (les adresses en fait) peuvent être falsifiés.

Cette méthode doit être évitée même avec des critères sur les hôtes plus restrictifs si vous êtes sur un réseau dans lequel vous ne pouvez avoir confiance (par exemple avec une connexion PPP sur Internet). Voir xhost(1x).


9.4.8 Connexion à un serveur X distante – ssh

L'utilisation de ssh active une connexion sûre d'un serveur X local vers un serveur d'applications distant.

Cette méthode permet l'affichage du client X distant comme s'il était connecté par une socket UNIX locale.


9.4.9 L'émulateur de terminal X – xterm

Apprenez tout sur xterm à l'adresse http://dickey.his.com/xterm/xterm.faq.html.


9.4.10 Ressources X

Beaucoup d'anciens programmes X, comme xterm, utilisent la base de données de ressources X pour configurer leur apparence. Le fichier ~/.Xresources est utilisé pour spécifier les ressources de l'utilisateur. Ce fichier est automatiquement ajouté aux ressources X par défaut au moment de la connexion. Les ressources X par défaut du système sont stockées dans /etc/X11/Xresources/* et les ressources par défaut des applications dans /etc/X11/app-defaults/*. Utilisez ces paramètres comme point de départ.

Voici quelques paramètres intéressants à ajouter à ~/.Xresources :

     ! Règle la police à 9x15, plus lisible
     XTerm*font: 9x15
     
     ! Affiche une barre de défilement
     XTerm*scrollBar: true
     
     ! Règle la taille du tampon à 1000 lignes
     XTerm*saveLines: 1000
     
     ! Large kterm screen
     KTerm*VT100*fontList: -*-fixed-medium-r-normal--24-*,\
      -*-gothic-medium-r-normal--24-*,\
      -*-mincho-medium-r-normal--24-*

Pour que ces paramètres prennent effet immédiatement, ajoutez-les à la base de données avec la commande :

     xrdb -merge ~/.Xresources

Voir xrdb(1x).


9.4.11 Clavier et souris sous X

Le programme xmodmap est utilisé pour éditer et afficher la carte des modificateurs de clavier et la table des touches du clavier qui est utilisée par les applications clientes pour converter les codes touches des événements en symboles de touches sous X.

     $ xmodmap -pm
      ... affiche la carte des modificateurs courante
     $ xmodmap -pk | pager
      ... affiche la table clavier courante
     $ xmodmap -e "pointer = 3 2 1" # configure la souris pour les gauchers
     $ xmodmap ~/.xmodmaprc # configure le clavier comme dans ~/.xmodmaprc

Il est généralement exécuté depuis le script de démarrage de session d'un utilisateur, ~/.xsession.

Pour obtenir le code touche, lancez xev sous X et appuyez sur des touches. Pour obtenir la signification d'un symbole de touche, regardez les définitions de MACRO dans /usr/include/X11/keysymdef.h. Tous les #define de ce fichier ont le préfixe XK_ suivi du nom du symbole de touche.

Voir xmodmap(1x).


9.4.12 Devenir root sous X

Si une application graphique a besoin d'être lancée avec les privilèges de root, utilisez les procédures suivantes pour le faire à partir du serveur X d'un utilisateur. N'essayez jamais de démarrer un serveur X depuis le compte root, pour vous garder d'éventuels risques de sécurité.

Démarrez le serveur X avec un utilisateur normal et ouvrez un xterm. Ensuite :

     $ XAUTHORITY=$HOME/.Xauthority
     $ export XAUTHORITY
     $ su root
     Password:*****
     # printtool &

Lorsque vous utilisez cette astuce pour effectuer un su vers un utilisateur non root, faites attention à ce que le fichier ~/.Xauthority soit lisible par le groupe de cet utilisateur.

Cette séquence de commandes peut être automatisée en créant un fichier ~/.xsession sur le compte de l'utilisateur, avec les lignes suivantes :

     # Cela permet que X marche quand je fais un su pour devenir root
     if [ -z "$XAUTHORITY" ]; then
         XAUTHORITY=$HOME/.Xauthority
         export XAUTHORITY
     fi
     unset XSTARTUP
     # Si vous désirez un gestionnaire de fenêtres/session particulier,
     # décommentez les lignes suivantes et éditez-les
     #XSTARTUP=/usr/bin/blackbox
     # Démarre le programme de gestion de fenêtres/session
     if [ -z "$XSTARTUP" ]; then
       if [ -x /usr/bin/x-session-manager ]; then
         XSTARTUP=x-session-manager
       elif [ -x /usr/bin/x-window-manager ]; then
         XSTARTUP=x-window-manager
       elif [ -x /usr/bin/x-terminal-emulator ]; then
         XSTARTUP=x-terminal-emulator
       fi
     fi
     # exécute le gestionnaire de fenêtres/session sélectionné
     exec $XSTARTUP

Ensuite, exécutez su (pas su -) dans une fenêtre xterm de l'utilisateur. Maintenant vous pouvez exécuter des applications graphiques avec les privilèges de root sur l'écran X d'un utilisateur normal. Cette astuce fonctionne tant que le Xsession par défaut est utilisé. Si un utilisateur personnalise ~/.xinit ou ~/.xsession, la variable d'environnement XAUTHORITY mentionnée ci-dessus doit être positionnée de la même façon dans ces scripts.

Une autre méthode est d'utiliser le paquet sudo :

     $ sudo xterm
     ... ou
     $ sudo -H -s

Ici le fichier /root/.bashrc doit contenir :

     if [ $SUDO_USER ]; then
         sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
     fi

Cela marche bien même si le répertoire home de l'utilisateur est sur une partition NFS, puisque root ne lit pas le fichier .Xauthority.

Il existe aussi des paquets spécialisés dans ce but : kdesu, gksu, gksudo, gnome-sudo, et xsu. Enfin, trois autres méthodes peuvent être utilisées pour atteindre des résultats similaires : créer un lien symbolique depuis /root/.Xauthority vers celui de l'utilisateur ; utiliser le script \|[quot ]\|sux\|[quot ]\| ; ou mettre xauth merge ~USER_RUNNING_X/.Xauthority dans le script d'initialisation de root.

Plus d'informations sur la liste de diffusion debian-devel.


9.4.13 Polices TrueType dans X

Le xfs standard de XFree86-4 fonctionne bien avec les polices TrueType. Il faut installer un autre serveur de polices comme xfs-xtt si vous utilisez XFree86-3.

Vous avez simplement besoin de vous assurer que les applications que vous voulez utiliser avec les polices TrueType sont liées avec les bibliothèques libXft ou libfreetype (vous n'avez probablement pas à vous en soucier si vous utilisez des .deb précompilés).

D'abord, configurez l'infrastructure de support des polices.

Ensuite, installez des paquets de polices suivant les DFSG :

Puisque les polices libres sont parfois limitées, l'installation ou le partage de certaines polices TrueType commerciales est une option pour les utilisateurs Debian. Afin de rendre ce processus facile pour l'utilisateur, il existe certains paquets :

Vous aurez ainsi une très bonne sélection de polices TrueType au prix de la contamination de votre système libre par des polices non-libres.

Tous ces paquets de polices dans Debian devraient marcher sans effort et être disponibles pour tous les programmes X qui utilisent le système de polices standard. Cela inclut par exemple Xterm, Emacs et la plupart des autres applications non-KDE et non-GNOME.

Maintenant, lancez xfontsel et sélectionnez une police TrueType dans le menu « fndry ». Vous devriez voir un grand nombre d'entrées non grisées dans le menu « fmly ».

Pour KDE2.2 et GNOME1.4 (avec libgdkxft0, qui est un hack pour que GTK1.2 fasse de l'anticrénelage sur les polices), vous devez configurer Xft1 aussi. Xft1 est obsolète, et n'est utilisé pratiquement que par GNOME1.4 et KDE2.2. Éditez le fichier /etc/X11/XftConfig et ajoutez une ligne

         dir "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"

avant les autres lignes dir. [10]

Pour GNOME2 et KDE3 (après la sortie de Sarge), vous devez configurer fontconfig que Xft2 utilise pour trouver les polices. [11] Vous ne devriez pas à avoir installer autre chose pour cela, puisque tous les paquets utilisant fontconfig auront une dépendance sur lui.

D'abord, regardez le fichier /etc/fonts/fonts.conf. Il devrait y avoir une ligne comme celle ci-dessous. Sinon, éditez /etc/fonts/local.conf et ajoutez :

         <dir>/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType</dir>

juste après la ligne <fontconfig>

fontconfig devrait prendre cela en compte immédiatement et fc-list devrait lister les nouvelles polices. Une autre possibilité intéressante de fontconfig est que vous pouvez mettredes polices dans ~/.fonts/ et tous les programmes utilisant fontconfig y auront accès immédiatement.

Si vous installez manuellement un nouvel ensemble de polices TrueType dans X sans un paquet Debian, lancez

     # xset fp rehash

pour que XFree86 les prenne en compte.


9.4.14 Navigateurs Web pour X

Il existe quelques paquets de navigateurs web disponibles avec la sortie de Woody :

La version de mozilla doit correspondre avec la version que galeon requiert. A part l'interface graphique, ces deux logiciels partagent le moteur de rendu HTML Gecko.

Des ajouts pour les navigateurs comme mozilla et galeon peuvent être activés en installant des fichiers *.so directement dans le répertoire plugin et en relançant les navigateurs.

Ressources :


9.5 SSH

SSH (Secure SHell) est le moyen sécurisé de se connecter à d'autres machines au travers d'Internet. Une version libre de SSH appelée OpenSSH est disponible dans le paquet ssh de Debian.


9.5.1 Bases de SSH

Installez d'abord le serveur et le client OpenSSH.

     # apt-get update && apt-get install ssh

L'entrée non-US doit être présente dans le fichier /etc/apt/source.list Le fichier /etc/ssh/sshd_not_to_be_run ne doit pas être présent si l'on veut exécuter le serveur OpenSSH.

SSh possède deux protocoles d'identification :

Faites attention avec ces différences si vous migrez vers Woody ou si vous utilisez un système non Debian.

Voir /usr/share/doc/ssh/README.Debian.gz, ssh(1), sshd(8), ssh-agent(1), et ssh-keygen(1) pour plus de détails.

Les fichiers suivants sont les fichiers de configuration importants.

Les commandes suivantes permettent de démarrer une connexion ssh.

     $ ssh username@hostname.domain.ext
     $ ssh -1 username@hostname.domain.ext # Force SSH version 1
     $ ssh -1 -o RSAAuthentication=no -l username foo.host
                  # force un mot de passe avec SSH1
     $ ssh -o PreferredAuthentications=password -l username foo.host
                  # force un mot de passe avec SSH2

Pour un utilisateur, ssh est plus intelligent que telnet (il ne crashe pas avec ^]).


9.5.2 Redirection de port pour un tunnel SMTP/POP3

Pour établir un tunnel pour se connecter au port 25 de remote-server depuis le port 4025 de la machine locale, et au port 110 de remote-server depuis le port 4110 de la machine locale par ssh, exécutez les commandes suivantes sur la machine locale :

     # ssh -q -L 4025:remote-server:25 4110:remote-server:110 \
                username@remote-server

C'est un moyen sécurisé d'effectuer une connexion vers un serveur SMTP/POP3 au travers d'Internet. Positionnez l'entrée AllowTcpForwarding à yes dans /etc/ssh/sshd_config sur la machine distante.


9.5.3 Se connecter avec moins de mots de passe – RSA

On peut éviter de se rappeler le mot de passe pour chaque système distant en utilisant RSAAuthentication (protocole SSH1) ou PubkeyAuthentication (protocole SSH2).

Sur le système distant, le contenu de /etc/ssh/sshd_config doit contenir « RSAAuthentication yes » ou « PubkeyAuthentication yes ».

Générez ensuite les clés d'identification localement et installez la clé publique sur le système distant :

     $ ssh-keygen          # RSAAuthentication : clé RSA1 pour SSH1
     $ cat .ssh/identity.pub | ssh user1@remote \
             "cat - >>.ssh/authorized_keys"
     ...
     $ ssh-keygen -t rsa   # PubkeyAuthentication : clé RSA pour SSH2
     $ cat .ssh/id_rsa.pub | ssh user1@remote \
             "cat - >>.ssh/authorized_keys"
     ...
     $ ssh-keygen -t dsa   # PubkeyAuthentication : clé DSA pour SSH2
     $ cat .ssh/id_dsa.pub | ssh user1@remote \
             "cat - >>.ssh/authorized_keys"

On peut changer la phrase de passe par la suite avec ssh-keygen -p. Assurez-vous de vérifier la configuration en testant la connexion. En cas de problème, utilisez ssh -v.

Vous pouvez ajouter des options dans les entrées de authorized_keys pour limiter les hôtes et exécuter des commandes spécifiques. Consultez sshd(8) pour plus de détails.

Notez que SSH2 fait une identification de type HostbasedAuthentication. Pour que cela fonctionne, il faut régler la configuration de HostbasedAuthentication à yes dans /etc/ssh/sshd_config sur le serveur et /etc/ssh/ssh_config ou $HOME/.ssh/config sur le client.


9.5.4 Clients SSH étrangers

Il existe quelques clients SSH gratuits disponibles pour des systèmes non Unix.

Windows
puTTY (GPL)
Windows (cygwin)
SSH in cygwin (GPL)
Macintosh Classic
macSSH (GPL) [Notez que Mac OS X inclut OpenSSH ; utilisez ssh depuis l'application Terminal]

Voir SourceForge.net, documentation du site, « 6. CVS Instructions ».


9.5.5 Configurer ssh-agent

Il est plus sûr de protéger votre clé d'identification SSH avec une phrase de passe. Si elle n'a pas été configurée, exécutez ssh-keygen -p.

Mettez votre clé publique (par exemple ~/.ssh/id_rsa.pub) dans ~/.ssh/authorized_keys sur un hôte distant comme décrit dans Se connecter avec moins de mots de passe – RSA, Section 9.5.3.

     $ ssh-agent bash # ou lancez zsh/tcsh/pdksh à la place
     $ ssh-add ~/.ssh/id_rsa
     Enter passphrase for /home/osamu/.ssh/id_rsa:
     Identity added: /home/osamu/.ssh/id_rsa (/home/osamu/.ssh/id_rsa)
     $ scp foo user@remote.host:foo
      ... pas besoin de phrase de passe à partir de maintenant :-)
     $^D
      ... fin de la session ssh-agent

Pour le serveur X, les scripts de démarrage de Debian exécutent ssh-agent comme processus parent. Donc, vous n'avez pas besoin d'exécuter ssh-add qu'une seule fois.

Pour plus d'information, consultez ssh-agent(1) et ssh-add(1).


9.5.6 Résoudre les problèmes avec SSH

Si vous rencontrez des problèmes, vérifiez les permissions du fichier de configuration et lancez ssh avec l'option -v.

Utilisez -P si vous êtes root et avez des problèmes avec un pare-feu ; cela évite d'utiliser des ports serveur 1–1023.

Si les connexions ssh vers un site distant arrêtent subitement de fonctionner, cela peut être suite à des bidouilles de l'administrateur, sûrement un changement de host_key pendant une maintenance du système. Après s'être assuré que c'est bien le cas et que personne n'essaie de se faire passer pour la machine distante par une bidouille, on peut se reconnecter en enlevant l'entrée host_key de ~/.ssh/known_hosts sur la machine locale.


9.6 Logiciels de courrier électronique

La configuration du courrier électronique se divise en trois parties :


9.6.1 Agent de transport de courrier électronique

Pour un MTA (Mail Transport Agent) complet, utilisez exim dans Woody et exim4 dans Sarge. [12] Références :

La seule alternative raisonnable est postfix si vous vous souciez de la sécurité. sendmail et qmail sont disponibles dans Debian mais ne sont pas recommandés.

Si vous n'avez pas besoin de la capacité de relai d'un MTA comme dans le cas d'un système satellite comme un portable, vous pouvez utiliser l'un de ces paquets légers :

A ce jour, je trouve qu'exim est le plus approprié même pour ma station de travail personnelle, qui est un portable.

Vous pouvez avoir besoin de supprimer exim pour installer l'un de ces paquets entrant en conflit avec :

     # dpkg -P --force-depends exim
     # apt-get install nullmailer         # ou ssmtp

9.6.1.1 Smarthost

Si vous utilisez exim4 ou exim sur une machine qui est connectée par un service grand public, assurez-vous d'envoyer le courriel sortant à travers le serveur offert par votre FAI ou un autre. [13] Voici quelques bonnes raisons pour le faire :

Les seules exceptions éventuelles sont :


9.6.1.2 Configuration de base d'Exim

Pour configurer exim4 ou exim en tant que MTA, configurez ce qui suit :

     /etc/exim.conf          "eximconfig" pour créer et éditer (exim)
     /etc/exim4/*            "dpkg-reconfigure exim4" pour créer et éditer (exim4)
     /etc/inetd.conf         mettez smtp en commentaire pour exécuter exim en
                             tant que daemon
     /etc/email-addresses    ajoutez les listes d'adresses sources spoofées

Vérifiez les filtres avec exim4 ou exim avec les options -brw, -bf, -bF, -bV, ... etc.


9.6.1.3 Configurer Exim pour récupérer les adresses non existantes

Dans /etc/exim/exim.conf (Woody ou plus), dans la partie DIRECTORS, à la fin (après localuser: director) ajoutez une directive "catch-all" qui correspond à toutes les adresses que la directive précédente ne pouvait résoudre (par Miquel van Smoorenburg) :

     catchall:
       driver = smartuser
         new_address = webmaster@mydomain.com

Si vous souhaitez une recette plus détaillée pour chaque domaine virtuel, ajoutez ce qui suit à la fin de exim.conf (par moi, pas bien testé) :

     *@yourdomain.com ${lookup{$1}lsearch*{/etc/email-addresses} \
             {$value}fail} T

Et ajoutez une entrée « * » dans /etc/email-addresses.


9.6.1.4 Configurer Exim pour réécrire les adresses sélectionnées sur les courriels sortants

La réécriture des adresses pour le courrier sortant afin d'avoir des en-têtes « From: » corrects peut être réalisée avec exim avec la configuration suivante près de la fin de /etc/exim/exim.conf :

     *@host1.something.dyndns.org \
       "${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1}  \
        {$0}{$1@something.dyndns.org}}"  frFs

Cela réécrit toutes les adresses de type *@host1.something.dyndns.org.

  1. Cela cherche dans le fichier /etc/password pour voir si la partie locale ($1) est un utilisateur local ou pas.
  1. Si c'est un utilisateur local, cela réécrit l'adresse telle qu'elle était en premier lieu ($0).
  1. Si ce n'est pas un utilisateur local, cela réécrit le nom de domaine.

9.6.1.5 Configurer Exim pour l'authentification SMTP

Certains services SMTP comme yahoo.com demandent une authentification SMTP. Configurez /etc/exim/exim.conf comme suit :

     remote_smtp:
       driver = smtp
       authenticate_hosts = smtp.mail.yahoo.com
     ...
     
     smarthost:
       driver = domainlist
       transport = remote_smtp
       route_list = "* smtp.mail.yahoo.com bydns_a"
     ...
     
     plain:
       driver = plaintext
       public_name = PLAIN
       client_send = "^cmatheson3^this_is_my_password"

N'oubliez pas les double guillemets sur la dernière ligne.


9.6.2 Récupérer le courrier électronique – Fetchmail

fetchmail est exécuté en mode démon et récupère le courrier électronique du compte POP3 du FAI sur le système de mail local. Configurez :

     /etc/init.d/fetchmail   voir ci-dessous pour le script
     /etc/rc?.d/???fetchmail exécutez update-rc.d fetchmail defaults 30
     /etc/fetchmailrc        fichier de configuration (chown 600)

Les informations pour démarrer fetchmail en mode démon depuis un script init.d dans Potato ne sont pas claires (Woody corrige cela). Voir les exemples /etc/init.d/fetchmail et /etc/fetchmailrc dans exemples de scripts.

Si vos en-têtes de courriers électroniques sont contaminées par des ^M dûs au logiciel de courrier électronique de votre FAI, ajoutez « stripcr » aux options dans $HOME/.fetchmailrc :

     options fetchall no keep stripcr

9.6.3 Traiter le courrier électronique – Procmail

procmail est un filtre pour le courrier électronique délivré. Il faut créer un $HOME/.procmailrc pour chaque compte qui l'utilise. Exemple : _procmailrc.


9.6.4 Filtrer le spam avec crm114

Le paquet crm114 fournit le script /usr/share/crm114/mailfilter.crm écrit en CRM114. Ce script fournit un filtre anti-spam très efficace qui peut être entraîné en lui fournissant du spam et des mails valides.

CRM114 est un petit langage conçu pour écrire des filtres ; c'est un espèce de grep avec des super pouvoirs. Voir crm(1).


9.6.5 Lire le courrier électronique – Mutt

Utilisez mutt comme agent pour utilisateur de courrier électronique (Mail User Agent, MUA) associé à vim. Personnalisez-le dans ~/.muttrc :

     # utiliser le mode visuel et "gq" pour reformater les citations
     set editor="vim -c 'set tw=72 et ft=mail'"
     #
     # sélection des en-têtes prise dans le manuel (« Sven's Draconian header
     # weeding »)
     #
     ignore *
     unignore from: date subject to cc
     unignore user-agent x-mailer
     hdr_order from subject to cc date user-agent x-mailer
     auto_view application/msword
     ....

Ajoutez ce qui suit dans /etc/mailcap ou $HOME/.mailcap pour afficher les courriers électroniques en HTML et les attachements MS Word dans le message :

     text/html; lynx -force_html %s; needsterminal;
     application/msword; /usr/bin/antiword '%s'; copiousoutput;
     description="Microsoft Word Text"; nametemplate=%s.doc

9.7 Localisation (l10n)

Debian est internationalisé et supporte un nombre toujours plus élevé de langues et de conventions locales. La sous-section suivante liste quelques formes de la diversité que Debian supporte actuellement, et la sous-section suivante parle de la localisation, processus de personnalisation de votre environnment de travail pour permettre l'entrée et l'affichage de votre langue et conventions pour les dates, les formats numériques et monétaires, et d'autres aspects d'un système qui diffèrent selon votre région.


9.7.1 Bases de la localisation

Il y a plusieurs aspects à la personnalisation de la localisation et du support de la langue nationale.


9.7.1.1 Localiser le clavier

Debian est distribuée avec le support pour près de deux douzaines de claviers. Dans Woody, reconfigurez le clavier avec :


9.7.1.2 Localiser les fichiers de données

La grande majorité des paquets de logiciels Debian supporte l'entrée de caractères non US-ASCII avec la variable d'environnement LC_TYPE offerte par la technologie des locales de la glibc.


9.7.1.3 Localiser l'affichage

X peut afficher n'importe quel codage y compris UTF-8 et supporte toutes les fontes. La liste inclut non seulement les polices 8 bits mais aussi des polices 16 bits comme pour le Chinois, le Japonais et le Coréen. L'entrée de caractères multi-octets est supportée par le mécanisme Méthodes d'entrée alternatives pour X, Section 9.7.10. Voir Exemple de système X bilingue, Section 9.7.9 et Support UTF-8 pour l'émulateur de terminal X, Section 9.7.12.

L'affichage du codage japonais EUC est aussi possible sur la console graphique (S)VGA avec le paquet kon2. Il existe aussi un nouvel affichage japonais jfbterm qui utilise la console FB. Dans ces environnements de console, la méthode d'entrée du Japonais doit être fournie par l'application. Utilisez le paquet egg pour Emacs et utilisez le paquet jvim pour Vim.

L'installation de polices non Unicode dans X aide à afficher des documents ayant n'importe quel codage. Aussi ne vous inquiétez pas trop à propos du codage des polices.


9.7.1.4 Localiser les messages et la documentation

Des traductions existent pour beaucoup de messages texte et documents qui sont affichés par le système Debian, comme les messages d'erreur, l'affichage standard des programmes, les menus et les pages de manuel. Actuellement, le support pour les langues Allemand, Espagnol, Finlandais, Français, Hongrois, Italien, Japonais, Koréen et Polonais dans les pages de manuel est fourni par les paquets manpages-LANG (où LANG est le code ISO à deux lettres du pays. Utilisez apt-cache search manpages-|less pour avoir une liste des pages de manuel disponibles).

Pour accéder à une page de manuel NLS, l'utilisateur doit configurer la variable du shell LC_MESSAGES de la façon appropriée. Par exemple, dans le cas des pages de manuel en Italien, LC_MESSAGES doit être positionnée à it. Le programme man cherchera alors les pages de manuel en Italien sous /usr/share/man/it/.


9.7.2 Locales

Debian supporte la technologie locale. C'est un mécanisme qui permet aux programmes de fournir un affichage et des fonctionnalités adaptés aux conventions locales comme le jeu de caractères, le format de la date et de l'heure, le symbole de la monnaie, et ainsi de suite. Il utilise des variables d'environnement pour déterminer le comportement approprié. Par exemple, en supposant que vous avez les locales Anglais américain et Allemand installées sur votre système, les messages d'erreur de beaucoup de programmes peuvent être multilingues :

     $ LANG="en_US" cat foo
     cat: foo: No such file or directory
     $ LANG="de_DE" cat foo
     cat: foo: Datei oder Verzeichnis nicht gefunden

La glibc offre le support pour cette fonctionnalité dans la bibliothèque. Voir locale(7).


9.7.3 Introduction aux locales

La description complète d'une locale comprend trois parties : xx_YY.ZZZZ.

Pour les codes de langue et de pays, voir l'information de info gettext.

Veuillez noter que la partie table du code peut être normalisée de façon interne pour obtenir une compatibilité inter-plateformes en enlevant tous les - et en convertissant tous les caractères en minuscules. Voici les tables de code typiques :

Et voici la signification du jargon des systèmes de codage :

ISO-8859-?, EUC, ISO-10646-1, UCS-2, UCS-4 et UTF-8 partagent le même code qu'ASCII pour les caractères de 7 bits. EUC ou Shift-JIS utilisent des caractères de bit haut (0x80-0xff) pour indiquer qu'une partie du codage est sur 16 bits. UTF-8 utilise aussi des caractères de bit haut (0x80-0xff) pour indiquer les séquences de caractères sur plus de 7 bits. C'est le système de codage le plus intelligent pour gérer les caractères non-ASCII.

Veuillez noter la différence d'ordre des octets des implémentations d'Unicode :

Voir Convertir un fichier texte avec recode, Section 8.6.12 pour convertir entre les jeux de caractères. Pour plus d'information, consultez Introduction to i18n (en Anglais).


9.7.4 Activer le support des locales

Debian n'est pas livrée avec toutes les locales disponibles précompilées. Consultez le fichier /usr/lib/locale pour voir quelles locales (à part le défaut, « C ») sont compilées pour votre système. Si celle dont vous avez besoin n'est pas présente, vous avez deux possibilités :


9.7.5 Activer une locale particulière

Les variables d'environnement suivantes sont évaluées dans cet ordre pour fournir les valeurs de locale aux programmes :

  1. LANGUAGE : cette variable d'environnement consiste en une liste de locales séparées par deux points verticaux, dans l'ordre de priorité. Utilisé seulement si la locale POSIX est positionnée à une valeur autre que "C" [dans Woody ; la version de Potato a toujours priorité sur la locale POSIX]. (GNU extension)
  1. LC_ALL : Si cette variable est non nulle, sa valeur est utilisée pour toutes les catégories de locales. (POSIX.1) Habituellement "" (null).
  1. LC_* : Si cette variable est non nulle, sa valeur est utilisée pour la catégorie correspondante. (POSIX.1) Habituellement "C".

    Les variables LC_* sont :

  1. LANG : Si cette variable est non nulle, et que LC_ALL n'est pas définie, sa valeur est utilisée pour toutes les catégories de locales LC_* sans valeur définie. (POSIX.1) Habituellement, "C".

Notez que certaines applications (par exemple Netscape 4) ignorent les valeurs LC_*.

Le programme locale peut afficher la locale active et les locales disponibles ; voir locale(1). (NOTE : locale -a liste toutes les locales du système ; cela ne signifie pas qu'elles sont toutes compilées ! Voir Activer le support des locales, Section 9.7.4.)


9.7.6 Format de date local ISO 8601

Le support de locale pour le standard international de la date yyyy-mm-dd (format de date ISO 8601) est fournit par la locale appelée en_DK, « Anglais au Danemark » qui est une espèce de blague :-) Cela semble ne marcher que sur la console pour ls.


9.7.7 Exemple pour les États-Unis (ISO-8859-1)

Ajoutez les lignes suivantes dans ~/.bash_profile :

     LC_CTYPE=en_US.ISO-8859-1
     export LC_CTYPE

9.7.8 Exemple pour la France avec le caractère Euro (ISO-8859-15)

Ajoutez les lignes suivantes dans ~/.bash_profile :

     LANG=fr_FR@euro
     export LANG
     LC_CTYPE=fr_FR@euro
     export LC_CTYPE

Configurez le clavier français « AZERTY » comme décrit dans la section Localiser le clavier, Section 9.7.1.1 et ajoutez les pages de manuel en Français en installant manpages-fr. La touche Alt-Droite s'appelle Alt-Gr en Europe. En appuyant dessus en même temps que d'autres touches on obtient de nombreux caractères accentués et spéciaux. Par exemple, Alt-Gr+E donne le signe Euro.

La plupart des langues d'Europe de l'Ouest peuvent être configurées de la même façon.

Voir Debian Euro HOWTO pour ajouter le support de la nouvelle monnaie Euro et Utiliser et configurer Debian pour le Français pour plus de détails en Français.


9.7.9 Exemple de système X bilingue

Configurons un système X bilingue qui supporte simultanément le Japonais, l'Anglais, l'Allemand et le Français avec les codages EUC, UTF-8 et ISO-8859-1 dans différentes consoles.

Je vais vous montrer une personnalisation en utilisant le système de menu Debian. Pour les détails du système de menu Debian consultez /usr/share/doc/menu/html/index.html. Je crée aussi un raccourci pour le navigateur web mozilla dans l'exemple. [14]

Pour d'autre support sur CJK, consultez les sections suivantes et SuSE pages for CJK.


9.7.10 Méthodes d'entrée alternatives pour X

Il existe beaucoup de paquets pour le support de méthodes d'entée alternatives pour X :

     Language   LC_CTYPE     XIM server XMODIFIERS              Démarrage par
     Japanese   ja_JP*       kinput2    "@im=kinput2"           Shift-Espace
     Korean     ko_KR*       ami        "@im=Ami"               Shift-Espace
     Chinese(T) zh_TW.Big5   xcin       "@im=xcin-zh_TW.big5"   Ctrl-Espace
     Chinese(S) zh_CN.GB2312 xcin       "@im=xcin-zh_CN.GB2312" Ctrl-Espace

La méthode d'entrée japonaise kinput2 est offerte par les paquets tels que kinput2-canna-wnn, kinput2-canna et kinput2-wnn. Le Japonais a besoin d'un serveur de dictionnaire comme canna et freewnn-jserver pour être utilisable.


9.7.11 Émulateurs de terminal X

Il existe beaucoup de consoles X qui supportent les codages sur 8 bits simples lorsque les bons paquets de polices sont installés :

Le support des codages multi-octets pour la console X est fourni par xterm par le codage UTF-8 (Support UTF-8 pour l'émulateur de terminal X, Section 9.7.12). Le support d'autres codages traditionnels est en progrès (en 2003). Les paquets suivants offrent le support de codages traditionnels :

Pour kterm (et peut-être d'autres), vous pouvez activer XIM par le menu après un Ctrl-click-milieu.


9.7.12 Support UTF-8 pour l'émulateur de terminal X

Le support UTF-8 pour l'émulateur de terminal X est founi par le programme uxterm du paquet xterm de XFree86 4.x. Cela permet le support pour toutes les langues. C'est une encapsulation de xterm(1) qui l'invoque en paramétrant la classe de ressource « UXTerm ».

Par exemple, pour activer l'affichage de l'Anglais, du Russe, du Japonais, du Chinois et du Coréen, ajoutez ce qui suit à votre ~/.Xresources après avoir installé les polices nécessaires :

     ! set large font
     UXTerm*font: -misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1
     ! Use XIM for Japanese
     *inputMethod: kinput2

Ensuite exécutez xrdb -merge ~/.Xresources pour mettre à jour les ressources X, comme décrit dans Ressources X, Section 9.4.10.

La plupart des programmes console les plus populaires, comme vim, mutt et emacs, aient été rendus compatibles avec UTF-8 récemment -Woody-Sarge). Des programmes comme mc ne sont toujours pas compatibles UTF-8, mais gèrent les codages 8 bits. Si vous éditez une partie en ASCII 7 bits d'un fichier inconnu ou avec un codage mixte, il est plus prudent d'utiliser un éditeur gérant les codages 8 bits.

Voir The Unicode HOWTO.


9.7.13 Exemple pour UTF-8 avec la console framebuffer

Le support UTF-8 pour la console FB est fournit par bterm utilisé dans debian-installer.


9.7.14 Après locale

Lorsque vous configurez un système pour la première fois pour un environnement de langue nationale, considérez l'utilisation de tasksel ou aptitude pour connaître les paquets sélectionnés en choisissant la tâche d'environnement de langue correspondante. Le choix de paquets est utile même pour la configuration multilingue. Si vous rencontrez des problèmes de dépendances pendant l'installation de votre système configuré, évitez d'installer les logiciels qui créent les conflits. Vous aurez peut-être à utiliser update-alternative pour retrouver l'état originel de certaines commandes puisque celles nouvellement installées peuvent avoir des priorités plus élevées que celles existantes.

Les programmes importants les plus récents qui utilisent la glibc 2.2 sont pour la plupart internationalisés. Les versions localisées spéciales comme jvim pour VIM peuvent ne pas être nécessaires et ses fonctionnalités sont offertes dans vim version 6.0 pour X. En réalité, il est encore difficile à utiliser. Puisque jvim possède une version avec le support de l'entrée des caractères japonais (canna) compilé directement même avec la console et résoud beaucoup d'autres problèmes spécifiques au Japonais, vous pouvez toujours en avoir besoin :-)

Certains programmes peuvent nécessiter une configuration en plus de la locale pour obtenir un environnement de travail confortable. Le paquet language-env avec sa commande set-language-env est un script qui facilite la configuration de l'environnement de langue nationale sur un système Debian.

Voir aussi le document sur l'internationalisation, Introduction to i18n. Il est destiné aux développeurs mais est aussi utile aux administrateurs système.


9.8 Multilingualisation (m17n)

La Localisation (l10n), Section 9.7, activée par les paquets language-env et d'autres, a pour objectif de permettre une localisation monolingue. Ces paquets utilisent aussi les codages traditionnels pour le codage du texte. Vous ne pouvez pas mélanger des textes en Français et en Japonais dans de tels environnements car ils utilisent les codages incompatibles entre eux ISO-8859-1 et EUC-JP.

Vous pouvez obtenir un bureau multilingue utilisant le codage UTF-8 en utilisant Gnome ou KDE avec l'une des locales UTF-8 disponibles. (Sarge) Dans de tels environnements, vous pouvez mélanger des caractères Anglais, Chinois, Russe et Japonais dans les logiciels compatibles avec UTF-8.

m17n-env est un script d'aide pour configurer un environnement de ce type. L'environnement multilingue UTF-8 est configuré en exécutant la commande set-m17n-env depuis les comptes root et utilisateur. [18]

Dans un tel environnement, la nouvelle méthode d'entrée (IM, Input Method) multilingue du paquet scim est préférée. La méthode d'entrée de scim est activée et désactivée en tapant Ctrl-Espace. Le moteur de conversion de l'entrée peut être changé dans la petite fenêtre de SCIM.

Vous pouvez toujours avoir un accès facile à l'environnement en codage traditionnel dans les consoles personnalisées créées par m17n-env. C'est pratique lorsque vous voulez éditer de vieux fichiers codés en EUC-JP ou ISO-8859-1.


[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ suivant ]

Guide de référence pour Debian

CVS, lun 03 avr 2005 22:57:18 UTC

Osamu Aoki osamu@debian.org
Coordinateur de traduction en Français : Guillaume Erbs gerbs@free.fr
Auteurs, Section A.1