Fichiers de résolution de noms
Apr 29Niveau :
Résumé : /etc/{hosts,ethers,protocols,services}
Comme nous venons de le voir la bibliothèque libnss permet de faire la correspondance entre des noms et des identifiants. Cette correspondance peut être faite par des services réseaux automatisés ou par des fichiers qui se trouvent sur votre système. Détaillons les fichiers du système, notez que c'est le fichier /etc/nsswitch.conf qui détermine s'ils sont utilisé et avec quelle priorité.
IANA
L'IANA est l'organisme chargé d'attribuer des numéros dans toutes sortes de domaines sur internet. On va le trouver un peu partout ici.
Protocols
Dans /etc/protocols on trouve la liste des identifiants des protocoles de communication comme TCP ou IP. Les plus importants à connaître sont IP(4), TCP(6) et UDP(17). En pratique vous ne les rencontrerez que rarement sauf si vous faites du réseau mais ça peut toujours servir. La liste des valeurs à jour se trouve sur le site de l'iana.
Services
Dans /etc/services se trouve la liste des associations port/service ainsi que le type de transfert associé (tcp ou udp). Je pourrais vous en citer un grand nombre d'important www (80), smtp(25), pop(110) ... mais limitons-nous. Il est très utile de les connaître lors de l'écriture d'un firewall ou la capture d'un flux. Le fichier /etc/services sera toujours votre aide mémoire en cas de port inconnu ou compliqué. Et pour toujours être à jour, il y a le site de l'iana.
Notons à propos de ces numéros que tous les ports inférieurs à 1024 sur un serveur unix ne peuvent être ouverts que par l'utilisateur root, donc un administrateur légèrement (si peu) plus digne de confiance qu'un simple utilisateur. De nos jour la différence ne se remarque (presque) plus car tout le monde est administrateur sur sa propre machine..
Cette correspondance peut se faire automatiquement dans la plupart des cas. Ainsi les 2 lignes suivantes sont équivalentes :
$ telnet 127.0.0.1 80 $ telnet 127.0.0.1 www
Rpc
Dans /etc/rpc se trouve un reliquat de la grande époque, c'est-à-dire la correspondance des Remote Procedure Call, outil un peu oublié de nos jours et qui ne sert quasiment plus qu'à NFS et NIS. Et c'est portmapper qui fournit le service associé.
Ethers
Dans /etc/ethers on fait la correspondance entre des adresses mac (ethernet) et des adresses IP. Ce fichier peut éventuellement servir à initialiser une table arp, mais il sert plus généralement de configuration au démon rarpd qui est une vieille méthode pour attribuer une IP à une machine (ancêtre de dhcpd).
Passwd
Dans le célèbre /etc/passwd on trouve les comptes du système. En résumé, rapidement : login:pass:id:group:text:home (man 5 passwd pour le détail). De nos jours pass est remplacé par x, ce qui veut dire qu'il faut aller chercher la vraie valeur dans un autre fichier, mieux protégé. Un mot de passe invalide, par exemple ! ou * rend la connexion avec mot de passe impossible.
Shadow
Nous parlions de fichier mieux protégé pour les mots de passe, hé bien il s'agit de /etc/shadow. Accessible uniquement par root, il contient une version hashée des mots de passe, ainsi que certaines informations associées à la sécuritée des comptes : login:pass:last:next:validity:invalid:desactivated. Vous trouverez le détail dans man 5 shadow, mais en résumé, on y trouve un mot de passe des méthodes obligeant/interdisant le changement de mot de passe ou permettant de gérer la désactivation du compte.
Group
Dans /etc/group se trouve la liste des groupes du système et la listes des utilisateurs qui constituent ce groupe. Le format est plutôt simple, man 5 group vous renseignera mieux que moi.
Fait marquant, il est possible d'attribuer un mot de passe à un groupe (commande gpasswd) créant au passage un fichier gshadow. Ceci peut parfois être utile pour donner accès à un groupe de travail sans avoir à changer le groupe de tous les participants. Par exemple, on peut créer le groupe coderz qui autoriserait toutes les personnes ayant le mot de passe du groupe de travailler sur les fichiers appartenant à coderz.
Notons que la connexion à un nouveau groupe avec la commande newgrp demande un mot de passe, mais surtout elle change le groupe primaire. C'est-à-dire que c'est le groupe de travail qui est changé, celui avec lequel on crée des fichiers. Ce qui diffère des groupes secondaires qui servent plus à donner des droit d'accès que de création de fichier.
Networks
/etc/networks est un fichier peu utilisé si ce n'est par les commandes route et netstat. Il permet de faire correspondre un réseau IP à un nom.
Hosts
Et enfin, le dernier, mais pas des moindres, /etc/hosts fait la correspondance entre IP et noms de domaine. Il fut un temps où le DNS n'existait pas. Il existait, tout comme pour /etc/services, un gros fichiers hosts que tout le monde se partageait.
Depuis, le dns et sa hiérarchie à été inventé (ouf) et tout est devenu plus simple. Mais ce fichier porte toujours son intérêt. Il est en effet, en général, prioritaire sur le dns. Il peut donc servir à remplacer temporairement un nom, par exemple pour tester un futur changement dans le DNS ou parce que vous voulez l'utiliser uniquement en local.
Ainsi vous pouvez définir des alias sympathiques pour vos machines. youpi.tralala.machine.p.goret.net pourra être renommée plouf ce qui vous simplifiera grandement la vie. De plus vous n'avez aucune hiérarchie ou convention de nommage à respecter.
Voila, fin du premier tour des tous les petits fichiers qui peuplent votre /etc !
Comments