par Christian Chartier |
|||
A r t i c l e s |
|
|
|
|
Rappels sur les services réseau sous linux Linux est un système d'exploitation multi-tâches multi-utilisateurs orienté réseau. Il possède en standard tout ce qu'il faut pour offrir des services réseau. Ces services réseau sont offert par des programmes tournant en arrière plan (appelés démons, de l'anglais daemon, acronyme de Disk And Execution MONitor), qui écoutent le réseau pour savoir si une requête leur est adressée. Chaque programme écoute une adresse particulière qui s'appelle un port. A chaque port correspond un service réseau particulier. La liste des correspondances entre le numéro de port et le service figure dans le fichier /etc/services. Sur un réseau, un service tournant sur une machine particulière est identifié par l'adresse IP de la machine (ou son nom) et le port sur lequel il écoute, sous la forme : adresseIP:port ou nom_de_machine:port Ces services (démons) peuvent être lancés au démarrage de la machine (par exemple le service d'impression cups ou lp, ou encore le serveur Web Apache) et tournent en permanence en arrière-plan. Ils consomment donc en permanence des ressources système. Pour éviter de surcharger la machine par des services dont le besoin n'est pas permanent, il existe un « super-démon » appelé inetd , ou sur les distributions plus récentes xinetd. Ce super-démon est un service tournant en permanence, lancé au démarrage, dont le rôle est d'écouter l'ensemble des ports listés dans ses fichiers de configuration (/etc/xinetd.conf et les fichiers contenus dans /etc/xinetd.d/) et, en cas de requête sur l'un de ces ports, d'exécuter le programme correspondant. Comment utiliser le réseau pour scanner ? Sane offre un service réseau : le démon saned , qui permet de scanner via le réseau. Il n'est pas indispensable que ce service tourne en permanence, aussi préférera-t-on son lancement par le super-démon xinetd. Il faut bien entendu configurer xinetd pour cela. L'intérêt de cette manoeuvre dans le cas qui nous intéresse est qu'on peut configurer l'utilisateur sous l'identifiant duquel sera lancé le démon saned. En l'occurence, l'accès au port parallèle nécessitant les droits de root, le démon saned sera lancé en tant que root. Ces informations figurent dans un fichier nommé sane placé dans /etc/xinetd.d/ Oui, mais moi, je n'ai pas de réseau ! Il n'est pas nécessaire d'avoir plusieurs machines pour utiliser des démons réseau. L'exemple du démon d'impression cups le montre bien : on peut imprimer même si l'on n'a qu'une machine. Dans ce cas, l'accès aux services réseau s'effectue via une interface réseau particulière : l'interface loopback , qui est en fait une interface réseau qui fait référence à la machine elle-même. On accède donc à un service réseau tournant sur la machine même par l'adresse de loopback qui est 127.0.0.1, ou par le nom de l'hôte local (localhost, ou le nom que vous avez donné à votre machine). Cependant, si vous utilisez un nom, la correspondance entre ce nom et l'adresse de loopback doit pouvoir être établie. Cette correspondance doit être établie par une entrée dans le fichiers /etc/hosts sous la forme suivante : 127.0.0.1 localhost.localdomain localhost 127.0.0.1 mamachine.mondomaine mamachine D'autre part, le fichier /etc/host.conf doit contenir une ligne du type de celle-ci : order hosts, bind Pourquoi puis-je imprimer en tant qu'utilisateur, alors que j'accède au port parallèle ? Sous linux, quand on imprime, on n'accède pas au port parallèle ! On ne fait que déposer un fichier d'impression dans un répertoire particulier du système, le répertoire de spool. Ensuite, le démon d'impression (qui est, comme je l'ai dit plus haut, un service), qui regarde en permanence s'il y a quelque chose à imprimer dans le répertoire de spool, envoie le fichier d'impression sur le port parallèle. Et ce service d'impression s'exécute avec les droits root, donc il peut écrire sur le port parallèle.
|
||||||||||||