Ouf ! Passons maintenant aux choses sérieuses ;-) et étudions comment fonctionne une connexion uucp aux travers des ses fichiers de configuration.
Pour fonctionner UUCP a besoin de 4 fichiers de configuration :
1- Un fichier général où on écrit, au minimum, le nom du système :
/etc/uucp/config
Par défaut, le nom uucp de la machine est celui donné par la commande hostname donc si celui-ci vous convient, vous n'avez pas besoin de renseigner ce fichier.
2- Un fichier qui écrit comment se connecter à chacune des autres machines UUCP auxquelles on va se connecter. Ce fichier contient entre autre les noms des machines voisines et la façon de s'y connecter.
/etc/uucp/sys
Ce fichier contient autant de "strophes" (pour user de la langue poétique) que de machines voisines. Dans chaque strophe on retrouve une ligne "port" qui pointe sur une entrée contenue dans un troisième fichier : /etc/uucp/port.
3- Un fichier qui contient les informations spécifiques à la liaison. Par exemple, le fichier de périphérique à utiliser, les vitesses, le type de modem, etc.
/etc/uucp/port
Ce fichier est également organisé en "strophes". dans chaque strophe on retrouve une ligne "dialer" qui pointe sur une entrée contenue dans un quatrième fichier : /etc/uucp/dialer.
4- Un fichier qui contient la liste des commandes nécessaires pour appeler un site avec un numéro de téléphone donné.
/etc/uucp/dialer
Compliqué ? Un petit dessin permettra de mieux comprendre les interactions des fichiers de configuration de Taylor UUCP :
le fichier config: décrit les infos locales
+-----------------------------------------+
| |
| hostname batman |
| passwdfile /etc/uucp/passwd |
| .../... |
| |
+-----------------------------------------+
le fichier sys: où et
comment se connecter
+--------------------+ le fichier port: décrit
| system gyptis | chaque entrée "port"
| port BATMAN-1 | +---------------------+ le fichier dial: décrit
| speed 115200 | | | chaque entrée "dialer"
| .../... |--->| port BATMAN-1 | +---------------------+
| | | type modem | | |
| | | speed 115200 |--->| dialer USR-ROBOTIC |
| system joker | | device /dev/ttyS0 | | chat "" ATZ ... |
| port BATMAN-2 | | dialer USR-ROBOTIC | | .../... |
| speed 38400 | | .../... | | |
| .../... | | | | dialer OLITEC |
| | | port BATMAN-2 | | chat "" ATZ ... |
+--------------------+ | type modem | | |
| speed 38400 | +---------------------+
| device /dev/ttyS1 |
| dialer OLITEC |
| .../... |
| |
+---------------------+
.-----------------------------------------------------------------.
| Et voici un exemple réel avec système appelé par modem (gyptis) |
| et un système appelé au dessus d'une couche TCP/IP (robin) |
`-----------------------------------------------------------------'
#BATMAN: /etc/uucp/config
#-------------------------------------------------------------
hostname batman
passwdfile /etc/uucp/passwd
#
unknown send-request true
unknown max-remote-debug none
unknown remote-send /home/ftp/
unknown remote-receive /home/ftp/incoming
unknown commands rmail rnews rsmtp
#-----------------------------------------------------<EOF>---
Note : passwdfile permet d'utiliser un fichier de mots de passe pour les appels ENTRANTS (ceux qui se connectent sur votre machine).
Grâce à ce fichier, Taylor-UUCP permet d'utiliser des paires (user, password) sans être obligé de créer une entrée supplémentaire pour "user" dans /etc/passwd.
Pour les appels SORTANTS (quand VOUS vous connectez à une autre machine) il est possible d'utiliser le même mécanisme grâce au fichier /etc/uucp/call. Si vous ne voulez pas utiliser de fichier call, il faudra mettre en clair votre login et votre mot de passe dans le fichier sys.
#BATMAN: /etc/uucp/passwd : concerne les appel ENTRANTS #------------------------------------------------------------- # l'user Uvictor se connecte à BATMAN # avec le mot de passe "BnU%s4@5" # # login password #------------------------------ # Uvictor BnU%s4@5 # ^^^^^^^ tabulation ici #-----------------------------------------------------<EOF>---
#BATMAN: /etc/uucp/call : concerne les appel SORTANTS #------------------------------------------------------------- #system login password #----------------------------- # gyptis Ubatman +='sd7A& robin Udenis 5s$£sdZ8 #-----------------------------------------------------<EOF>--- #BATMAN: /etc/uucp/sys #------------------------------------------------------------- # # définition des protocoles possibles # ----------------------------------- protocol itgvG protocol-parameter G packet-size 1024 protocol-parameter G short-packets # # directives demandant d'utiliser le fichier /etc/uucp/call # --------------------------------------------------------- call-login * call-password * # # # #======================================================== # # Denis BRAUSSEN 15 nov 1998 # acces au système "gyptis" par modem # # note: les mots de passe sont évidemment fantaisistes. #========================================================= system gyptis # # batman peut appeler à n'importe quel moment. # il est possible de mettre ici des restrictions # (jours et/ou heures) pour ne permettre les appels # qu'à certains moments. #--------------------------------------------- time Any # # donnez n'importe quel nom grotesque à votre # entrée dans le fichier /etc/uucp/port :-) #---------------------------------------------- port batman_serial1 # # le numéro de téléphone de gyptis #---------------------------------------------- phone 0491604361 # # la vitesse maximale autorisée # entre le modem et votre ordinateur. # hélas, il ne s'agit pas de la vitesse de # transfert entre les 2 modems distants ! :) #---------------------------------------------- speed 115200 # # #----------------------------------------------- # # le "chat" (dialogue) lors de la connexion # # note: \L et \P demandent d'inclure le login # et le password (respectivement) trouvés # dans /etc/uucp/call #----------------------------------------------- chat "" \r\c ogin: \L word: \P # # #----------------------------------------------- # exemple si on n'utilise pas /etc/uucp/call # pensez à désactiver les lignes # call-login * # call-password * # #chat ogin: Ubatman word: +='sd7A& #----------------------------------------------- # # si le chat échoue, on se déconnecte après 190 # secondes #----------------------------------------------- chat-timeout 190 # # # liste des commandes que batman peut exécuter sur gyptis # cette liste est donnée par l'administrateur de gyptis # car dans son /etc/uucp/sys il a défini ces commandes # comme étant valides pour batman grâce à une ligne comme # "commands rmail rnews rsmtp" dans la strophe décrivant # batman. Ici, on rends simplement le procédé symétrique # afin que gyptis puisse exécuter les mêmes commandes sur " batman. # ------------------------------------------------------- commands rmail rnews rsmtp # # # liste des protocoles que batman peut utiliser avec gyptis # je choisis ce qui me conviens le mieux (certains préfèrent # d'ailleurs le protocole "g", _parfois_ plus rapide) # --------------------------------------------------------- protocol it # # # #=========================================================== # # Denis BRAUSSEN 15 nov 1998 # acces au système robin en passant par TCP/IP # # #============================================================ system robin # # uniquement pour TCP/IP #----------------------------------------- address robin.gotham.city time any port TCP # # sous TCP/IP seul le protocole "t" est possible #------------------------------------------------ protocol t chat "" \r\c ogin:-BREAK-ogin:-BREAK-ogin: \L word: \P # # idem mais sans /etc/uucp/passwd # pensez à désactiver les lignes # call-login * # call-password * #------------------------------------------------ #chat "" \r\c ogin: Udenis word: 5s$£sdZ8 # commands rmail rnews # # définition des répertoires d'où peuvent # être envoyés et où peuvent être reçu les fichiers # # / signifie "tous les répertoires" # # ~ signifie "uniquement le répertoire public local" # en général: /var/spool/uucppublic #--------------------------------------------------- remote-send / remote-receive ~ #-----------------------------------------------------<EOF>---
#BATMAN: /etc/uucp/port #------------------------------------------------------------- # # Note: on retrouve les entrées "batman_serial1" et "TCP" # annoncées dans le fichier /etc/uucp/sys # #************************************************************* # Description for the SERIAL port - DON'T DELETE. # ============================================== port batman_serial1 type modem device /dev/ttyS0 speed 115200 # # donnez n'importe quel nom étrange à l'entré # destinée au fichier /etc/uucp/dial #------------------------------------------- dialer USRvi #************************************************************** # # # #************************************************************** # Description for the TCP port - pretty trivial. DON'T DELETE. # ============================================================ port TCP type tcp #************************************************************** # #-----------------------------------------------------<EOF>--- #BATMAN: /etc/uucp/dial #------------------------------------------------------------- # # Note: on retrouve l'entrée "USRvi" annoncée dans le fichier # /etc/uucp/port. # #-------------------------------------------------------- #USRvi== USR-ROBOTIC SPORSTER vi 33.6 # cette chaine d'init utilise un registre non documenté # qui permet d'éviter les "numéro brulés" (S40=7) # (on parle aussi de "blackList" # # ATTENTION: # ---------- # Notez également le "OK" après la chaine ATZ. C'est obligatoire # si on veut rajouter d'autres initialisations et un simple # ATZATS7=45S0=0L1V1X4&C1E1Q0S40=7 OK ATDT\T CONNECT ne # FONCTIONNERAIT PAS !! # # TIP: pour les modems USR Robitic, il est parfois préférable # *** d'utiliser la chaine d'initialisation AT&F1 OK au lieu # de ATZ OK # # dialer USRvi chat "" ATZ OK ATS7=45S0=0L1V1X4&C1E1Q0S40=7 OK ATDT\T CONNECT # #-------------------------------------------------------- # exemples corrects mais plus simples # note: le \T sera remplacé à l'exécution par le numéro de # téléphone du système à appeler. # #chat "" ATZ OK ATS40=7 OK ATDT\T CONNECT #chat "" ATZ OK ATDT\T CONNECT #------------------------------------------------<EOF>---
Marc Schaefer nous précise :
«en utilisant le mode 'pipe' on peut aussi faire de l'UUCP par ssh. Il faut un patch à ssh cependant. Me le demander à <schaefer@alphanet.ch>»
Ils doivent appartenir à l'user uucp et au groupe uucp. En général ces droits sont par défaut :
-rw-r--r-- (644)
--> Personnellement je les ai mis à : -rw-r----- (640)
SAUF les fichiers call et passwd qui sont en
-rw-r----- (640)par défaut.
--> Personnellement je les ai mis à : -rw------- (600)car ces mots de passe ne doivent pas pouvoir être lus par n'importe qui.
Il faut s'assurer que le fichier /etc/services contienne bien les lignes suivantes :
#/etc/services #------------------------------------------------------------ uucp-path 117/tcp # uucp 540/tcp uucpd # uucp daemon # #-------------------------------------------------------------
Assurez vous également que le super Daemon inetd puisse assurer la wrapping d'uucp en vérifiant que la ligne suivante existe bien dans /etc/inetd.conf :
#/etc/inetd.conf #------------------------------------------------------------ uucp stream tcp nowait uucp /usr/sbin/tcpd uucico -l #------------------------------------------------------------
Tip : en cas de mise à jour de ce fichier faites un
ps -x | grep inetd
pour connaître le PID de inetd puis réinitialisez le super daemon par un (sans les < >) :
kill -HUP <PID-de-inetd>
Rien de spécial à priori. Je vous livre toutefois la configuration de batman (SlackWare) :
#!/bin/sh # # /etc/rc.d/rc.serial # Initializes the serial ports on your system # # Denis BRAUSSEN 01-09-1997. voir intmodem.txt dans doc.fr de la slackware #------------------------------------------------------------------------- echo "entering /etc/rc.serial" # #mise en place controle de flux par RTS CTS stty crtscts < /dev/ttyS0 # #configuration pour un port serie rapide setserial /dev/ttyS0 spd_vhi # echo "/etc/rc.serial is done." # #affiche configuration setserial -bg /dev/ttyS0 # #-------------------------------------------------------------------------
Sur une distribution Debian, on peut modifier /etc/rc.boot/*0setserial et remplacer la ligne :
STD_FLAGS="session_lockout"
par
STD_FLAGS="session_lockout spd_vhi"