Next Previous Contents

5. Compiler et installer Taylor UUCP

Ceux qui ne veulent pas compiler eux mêmes Taylor UUCP peuvent passer au chapitre suivant. Je leur conseille toutefois de lire quand même le présent chapitre, il contient des informations importantes.

5.1 Préambule : /dev/cuaX ou /dev/ttyS0 ?

Vous le savez sans doute les devices /dev/cuaX et /dev/ttySX (où 'X' est un nombre, comme par exemple dans /dev/ttyS0) représentent les ports série.

Pendant longtemps le port série numéro 1 (COM 1 sous MS-DOS) était désigné par /dev/cua0. Naturellement, le deuxième port série se nomme quant à lui /dev/cua1, etc.

Dans les distributions récentes (Debian, RedHat,...) et surtout depuis la sortie du noyau 2.2.x de Linux, ces dénominations sont à proscrire. Les ports série doivent désormais être appelés /dev/ttyS0, /dev/ttyS1, etc.

L'existence des ces deux notations a pu faire croire à de nombreux utilisateurs que /dev/cuaX et /dev/ttySX étaient parfaitement synonymes et il n'est pas rare de constater que certains utilisent indifféremment /dev/cuaX dans un script puis /dev/ttyS0 dans un autre.

Ils ont tort.

Adoptez immédiatement de bonnes habitudes et remplacer tous les "cua" qu'il pourrait y avoir dans vos scripts (scripts de démarrage y compris) par les "ttyS". Je m'adresse en particulier aux utilisateurs de la SlackWare :-)

Pourquoi ?

Hormis ce qui est dit dans le texte mentionné un peu plus bas, il y a en ce qui nous concerne un argument incontournable : le programme "mgetty" (voir chapitre 12) a ABSOLUMENT besoin de connaître les ports série par ces noms (ttySX) ! Alors tous à vos "grep cua*" ;-) (*)

(*) recherche par grep des occurences de la chaîne "cua" dans tous les fichiers du répertoire courant.

Pour plus de détails lisez le texte "ttyS-cua.txt" fourni avec mgetty et aussi ce post d'É.Dumas sur fr.comp.os.linux.moderated, sinon passez directement au paragraphe suivant (4.2).

------------------------------------------------------------>
From dumas@freenix.fr Sat Sep 26 22:42:56 1998
Date: 28 Aug 1998 07:50:19 GMT
From: Eric Dumas <dumas@freenix.fr>
Reply-To: dumas@Linux.EU.Org
Newsgroups: fr.comp.os.linux.moderated
Subject: Re: asm/io.h

Frederic Baumann <baumann@ilog.fr> wrote:
> rani@magic.metawire.com (Rani Assaf) writes:

> Tu as l'air assez au courant. Quelle est/etait la difference entre cuax
> et ttySx ? Pourquoi cela a-t-il change ?

        Les terminaux ont une histoire un peu particulière sous
Linux...  En gros, et pour faire court, ttySx était initialement conçu
pour ne gérer que les appels entrants: lorsqu'un processus ouvre ce
périphérique, il était suspendu tant qu'un périphérique physique soit
prêt (genre, un modem qui accepte des communications externes) -
signal DTR.
        cuax est utilisé pour les appels sortants.

        Extrait de linux/Documentation/devices.txt (2.1.118) :

=-=-=-=-

        Serial ports

Serial ports are RS-232 serial ports and any device which simulates
one, either in hardware (such as internal modems) or in software (such
as the ISDN driver.)  Under Linux, each serial ports has two device
names, the primary or callin device and the alternate or callout one.
Each kind of device is indicated by a different letter.  For any
letter X, the names of the devices are /dev/ttyX# and /dev/cux#,
respectively; for historical reasons, /dev/ttyS# and /dev/ttyC#
correspond to /dev/cua# and /dev/cub#.  In the future, it should be
expected that multiple letters will be used; all letters will be upper
case for the "tty" device (e.g. /dev/ttyDP#) and lower case for the
"cu" device (e.g. /dev/cudp#).

The names /dev/ttyQ# and /dev/cuq# are reserved for local use.
=-=-=-=-

-- 
                        Eric Dumas (dumas@tumbleweed.com)
           Tumbleweed Software, 2010 Broadway, Redwood City, CA 94063, USA
               http://www.tumbleweed.com    Tel: +1 650 569-3619

------------------------------------------------------>

5.2 Lisez le fichier README ! ;-)

et créez, si nécessaire un user "uucp" ainsi qu'un groupe "uucp".

user et groupe uucp

exemple 1 : sur batman (SlackWare)

#extrait de /etc/passwd
uucp:x:10:14:uucp:/var/spool/uucppublic:

#extrait de /etc/group
uucp::14:uucp,news,mail,root,fnet

exemple 2 : robin (Debian)

#extrait de /etc/passwd
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh

#extrait de /etc/group
uucp:x:10:

exemple 3 : certains préfèrent donner "uucico" comme shell à l'user uucp. Mais ceci dépasse le cadre de cette documentation.

5.3 Éditer le fichier Makefile.in

et ajustez le à vos besoins. Il s'agit là de spécifier les répertoires où vous voulez que uucp s'installe. Mais en général cette étape est inutile, car les valeurs par défaut sont bien choisies.

5.4 Éditez le fichier policy.h

Cette étape est importante, car elle va vous permettre de choisir le comportement de Taylor UUCP. Vous pourrez ainsi opter pour des log "à la HBD" ou "à la Taylor", le répertoire pour les verrous (lock files), le niveau de déboguage, etc. La plupart du temps il est souhaitable de garder les valeurs par défaut. Pour ma part, sur batman j'ai préféré modifier quelques options. En particulier j'aime que les loggins, pour chaque machine appelée, soient écrits dans des fichiers séparés. Aussi ais-je parfois activé la façon "HDB" plutôt que celle de Taylor. Mais franchement, c'est une affaire de goût...

Ci-dessous, pour information, un extrait de mon policy.h : Les mots "Denis BRAUSSEN" indiquent les options que j'ai modifiées, n'oubliez pas de mettre à 0 (zéro) les options à désactiver en contrepartie !

-------------------------------------------------------------------<
/* policy.h
   Copyright (C) 1991, 1992, 1993, 1994, 1995 Ian Lance Taylor
   This file is part of the Taylor UUCP package.
*/

/* Denis BRAUSSEN */
#define LOCKDIR "/var/spool/locks

/* Denis BRAUSSEN */
#define HAVE_HDB_LOCKFILES 1

/* Denis BRAUSSEN */
#define HAVE_HDB_LOGGING 1
-------------------------------------------------------------------<

MISE EN GARDE IMPORTANTE

Attention à la variable LOCKDIR : elle définit le répertoire qui contiendra le fichier "verrou". Ce fichier contient le pid du processus en cours qui utilise le port série (ici : uucico). Il est là pour garantir qu'aucun autre processus n'utilise le port série en même temps. Il est donc PRIMORDIAL que TOUS les programmes qui utilisent le port série utilisent pour leurs lockfile :

exemple  :      27816    
ou encore: 0000027816 

Quels sont les autres programmes susceptibles d'utiliser la ligne série ? Typiquement il y a :

5.5 Exécuter le script "configure"

5.6 Vérifiez et éventuellement modifiez le fichier Makefile généré par "configure".

Pour ma part, j'ai modifié la ligne qui indique où doivent se trouver les fichiers de configuration. Mais il se peut que cela ne soit pas nécessaire sur toutes les distributions : sur la Debian et sur la RedHat 5, /etc/uucp est choisi par défaut.

----------------------------<
# The directory to look in for new style configuration files (when
# using HAVE_TAYLOR_CONFIG).  Note that by default this is different
# from sbindir, unlike traditional UUCP packages.
#newconfigdir = $(prefix)/conf/uucp
#
#modified by Denis BRAUSSEN
newconfigdir = /etc/uucp
----------------------------<

5.7 Lancez la commande "make all"

5.8 Vérifiez les droits sur les répertoires

ils doivent appartenir à l'user "uucp" et au groupe "uucp".

nom                      droits              user     group
------------------------------------------------------------
/etc/uucp                drwxr-xr-x   (755)   uucp     uucp    
/var/spool/uucp          drwxr-xr-x   (755)   uucp     uucp  
/var/spool/uucppublic    drwxrwxrwt  (1777)   uucp     uucp

Attention au bit "t" de /var/spool/uucppublic, il s'agit du "sticky-bit" (bit collant). Si celui ci est positionné sur un répertoire, seul le propriétaire d'un fichier peut supprimer ce dernier même si tout le monde peut avoir accès au répertoire.

Utilisez chmod u+t /var/spool/uucppublic en étant root pour positionner ce bit.

Là aussi, quelques variantes sont possibles, en particulier pour le répertoire /etc/uucp. Nicolas Chuche <chuche@soda.teaser.fr> par exemple a sur sa machine :

/etc/uucp                drwxrwx---   (770)   uucp     uucp

et la distribution Debian 1.3.1 (tout comme la 2.1 d'ailleurs) quant à elle préconise :

/etc/uucp                drwxrwx---   (770)   root     root

5.9 Exécuter uuchk.

Ce programme va vérifier et afficher la configuration en cours. Exécutez uuchk également quand vous aurez écrit vos fichiers de configuration.

5.10 Sauvegardez le fichier Makefile et policy.h

(par exemple dans /etc/uucp) cela pourra toujours vous servir en cas de doute sur les valeurs utilisées par uucp sur votre machine.

5.11 sudo

attention : uucp va lancer des programmes comme rmail, rnews ou même sendbatch. Ce dernier est normalement lancé par l'utilisateur 'news', mais il peut être parfois utile de le lancer depuis un autre compte. Cela peut poser quelques surprises si les fichiers concernés n'ont pas les droits adéquats. Par exemple,

/usr/lib/news/bin/sendbatch
a par défaut les droits suivants :
-rwxr-x---  news  news

et ne pourra pas être exécuté par l'user uucp. Il faut corriger le tir soit en donnant à sendbatch les droits adéquats (mais IMHO je trouve cela "mal" car j'évite de toucher aux droits du pointilleux INN) soit en utilisant sudo, solution que j'ai choisie.

Voici l'entrée correspondante de mon /etc/sudoers :

#extrait de /etc/sudoers sur batman
#--------------------------------------------------
uucp      BatMan=(news) /usr/lib/news/bin/sendbatch
#--------------------------------------------------

Next Previous Contents