Linux

CentOS 4.8

services(5)


SERVICES

NOM

services − Liste des services internet.

DESCRIPTION

services est un fichier de texte ASCII fournissant une correspondance entre un nom intelligible décrivant un service internet et l’ensemble numéro de port / protocole utilisé.

Chaque programme réseau devrait consulter ce fichier pour obtenir le numéro de port et le protocole sous-jacent au service qu’il fournit. Les fonctions de la bibliothèque C getservent(3), getservbyname(3), getservbyport(3), setservent(3), et endservent(3) permettent d’interroger ce fichier depuis un programme.

Les numéros de ports sont affectés par le IANA (Internet Assigned Numbers Authority), et leur politique actuelle consiste à assigner à la fois les protocoles TCP et UDP à chaque numéro de port.

Ainsi la plupart des services auront deux entrées, même si elles n’utilisent que le protocole TCP.

Les numéros de ports en−dessous de 1024 ne peuvent être assignés à une socket que par un programme Super−User (voir bind(2), tcp(7), et udp(7).

C’est ainsi que les clients se connectant sur ces ports de petits numéros peuvent être sûrs que le service correspondant est une implémentation standard et non pas le bricolage d’un utilisateur. Normalement les ports biens connus (well−known) affectés par le IANA se situent dans cet espace réservé au Super−User.

La présence d’une ligne indiquant un service dans le fichier services ne signifie pas nécessairement que le service en question est disponible sur la machine. Voir inetd.conf(5) pour la configuration des services Internet offerts. Notez que tous les services réseau ne sont pas obligatoirement lancés par inetd(8), et n’apparaîtront donc pas toujours dans inetd.conf(5). En particulier les serveurs de News (NNTP) et de courrier (SMTP) sont souvent initialisés par le système dans les scripts de démarrage.

L’emplacement du fichier services est défini par la constante _PATH_SERVICES dans /usr/include/netdb.h. C’est généralement /etc/services.

Chaque ligne décrivant un service est de la forme

service-name port/protocole [alias ...]

où :

service-name

est le nom intelligible du service. La différence majuscule/minuscule est importante. Souvent le programme client possède un nom rappelant celui du service.

port

est le numéro de port (en décimal) utilisé pour ce service.

protocol

est le type de protocole utilisé, il doit s’agir d’un nom déclaré dans le fichier protocols(5). Les protocoles les plus courants sont tcp et udp.

alias

est une liste éventuelle d’autres noms se référant au même service, séparés par des espaces ou des tabulations (voir section BOGUES plus bas). Encore une fois, la différence majuscule/minuscule est importante.

Les différents champs sont séparés par des espaces ou des tabulations. Un signe # débute un commentaire, qui s’étendra jusqu’à la fin de la ligne. Les lignes blanches sont ignorées.

Le champ service-name doit débuter à la première colonne du fichier, car les espaces en tête de ligne ne sont pas éliminés.

service-name peut contenir n’importe quel caractère imprimable, sauf espace et tabulation. Il est néanmoins déconseille d’utiliser d’autres caractères que a−z, 0−9, et le tiret (−).

Les lignes ne se conformant pas à ce format sont ignorées silencieusement par getservent(3), getservbyname(3), et getservbyport(3), mais ce comportement peut changer.

A titre de compatibilité avec les versions précédentes, le slash (/) entre le numéro de port et le nom du protocole peut être également remplacé par une virgule, mais c’est déconseillé.

Ce fichier peut être diffusé sur le réseau en utilisant des services comme Yellow Pages/NIS ou BIND/Hesiod.

EXEMPLE

$ ls -l /etc/services
-rw-r--r--   1 root   root   3432 Feb 16  1996 /etc/services
$ cat /etc/services
   ...
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp          # message send protocol
msp             18/udp          # message send protocol
chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp             21/tcp
# 22 - unassigned
telnet          23/tcp
   ...
$

BOGUES

Il y a un maximum de 35 alias par service à cause des limitations de getservent(3).

Les lignes plus longues que BUFSIZ (actuellement 1024) sont ignorées par getservent(3), getservbyname(3), et getservbyport(3). De plus la ligne suivante sera mal interprétée.

FICHIERS

/etc/services

La liste des services internet.

/usr/include/netdb.h

Définition de _PATH_SERVICES.

VOIR AUSSI

getservent(3), getservbyname(3), getservbyport(3), setservent(3), endservent(3), protocols(5), listen(2), inetd.conf(5), inetd(8).

RFC "Assigned Numbers", actuellement RFC 1700, (AKA STD0002)

Guide to Yellow Pages Service

Guide to BIND/Hesiod Service

TRADUCTION

Christophe Blaess, 1997.


services(5)